Boa tarde.

Essa dica foi feita em Delphi2006, com o Indy v10.1.5, por isso pode ser que exista alguma diferença para o Delphi7 ou mesmo o Delphi2005. Mas nada que impeça o desenvolvedor instalar o Indy mais novo na IDE ou encontrar uma solução para uma versão mais antiga do Indy.

Bom resolvi escrever esse artigo porque precisei enviar e-mails mas não podia ser como avexo, pois muitas pessoas com medo de vírus de outras coisas quase sempre não abrem as correspondências que tem o "clips" indicando o anexo, então precisava que fosse junto com o corpo do e-mail.

Fazendo muita pesquisa aprendi a estrutura do e-mail. Gostaria que os leitores que virem qualquer absurdo escrito aqui sobre esse tema, que complete com comentários, pois acho muito bom que seja divulgado esse assunto que para mim ainda é muito novo.

O formato de e-mail é difinido em RFC 2822. O formato que nos interessa é o Multipurpose Internet Mail Extensions (MIME). Bom a estrutura principal é a seguinte:

    * Headers
    * Encoded-Word
    * Multipart Messages

Cada uma das partes (Multipart) tem suas particularidades. Bom, uma parte muito interessante é o Content-type, que pode ser:

    * Mixed
    * Digest
    * Alternative
    * Related
    * Report
    * Signed
    * Encrypted

É o content-type que vai dizer para o cliente que tipo de pedaço é o que segue no e-mail. O alternative diz para o cliente que ele pode escolher qual o tipo a ser visualizado conforme a escolha do usuário e se usa assim; primeiro coloca-se uma parte em texto plano para alguns clientes que não são capazes de visualizar no formato HTML e a outra parte em HTML, com todas as formatações que ele nos permite.

Bom o melhor mesmo é eu mostrar um exemplo:

Exemplo_Email.jpg

Vamos entender o E-mail.

A parte em cinza é o cabeçalho onde eu digo que o Content-Type é multipart/alternative, o que é isso? Digo para o cliente de e-mail que ele vai poder escolher o que mostrar conforme a visualização escolhida ou suportada. A parte em verde é a parte de texto plano caso o cliente não tenha suporte para HTML, a parte em rosa é HTML com a figura inline, dentro da mensagem, não como anexo. Dentro da parte HTML temos que ter um HTML com uma tag chamando a imagem que é <img src="" alt="">, o cid dentro do src quer dizer Content-ID, avisa para o HTML buscar alguma coisa em um lugar específico dentro do e-mail.

Bom agora vai o código em Delphi usando Indy para podermos fazer tudo isso.

Codigo.jpg

Qualquer dúvida meu E-mail é luiz.benevenuto@gmail.com.
Apesar que eu prefiro que comentários sejam postados aqui para que todos vejam.
Muito obrigado e até a próxima.