Como criar emails em formato HTML usando Indy 9?
Exemplo de envio de email em formato HTML usando Delphi e Indy 9:
1 var 2 Email: TIdMessage; 3 Texto: TIdText; 4 Html: TIdText; 5 Anexo: TIdAttachment; 6 begin 7 Email := TIdMessage.Create(nil); 8 try 9 // ...ajusta remetente, destinatário, etc... 10 11 // define o tipo do conteúdo da mensagem 12 Email.ContentType := 'multipart/mixed'; 13 14 // cria a parte texto - pode estar em branco 15 Texto := TIdText.Create(Email.MessageParts); 16 Texto.Body.Text := 17 'This message contains HTML and images.'; 18 Texto.ContentType := 'text/plain'; 19 20 // cria a parte HTML 21 Html := TIdText.Create(Email.MessageParts); 22 Html.Body.Text := '<html><body>' 23 + 'Mensagem de <b>Teste</b><br />' 24 + '<img src="cid:imagem.jpg" />' 25 + '</body></html>'; 26 Html.ContentType := 'text/html'; 27 28 // inclui no email a imagem usada na parte HTML 29 Anexo := TIdAttachment.Create( 30 Email.MessageParts, 'c:\pasta\imagem.jpg'); 31 Anexo.ContentType := 'image/jpg'; 32 Anexo.Headers.Add('Content-ID: <imagem.jpg>'); 33 34 // ... envia o email... 35 finally 36 Email.Free; 37 end; 38 end;
- A parte em formato text/plain deve estar presente embora não precise conter texto. Existe um bug no Indy que, na ausência dessa parte, faz com que o email seja gerado vazio.
- Para ter imagens embutidas no email, inclua o header Content-ID e use na tag img o modificador cid: ao especificar a origem da imagem.