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:
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.
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.