Envoyer un mail en HTML avec Delphi
Publié le 29/01/2018Il est relativement facile d'envoyer un mail avec Delphi, avec la suite Indy on peut composer son mail avec du HTML, des images incluses, des pièces jointes...et hop un coup de SMTP et le mail part...le seul petit soucis est qu'il faut configurer la connexion SMTP évidemment...de plus, si vous voulez conserver le mail dans la boîte d'envoi, il faut passer par une session IMAP.
De son côté MAPI - à ne pas confondre avec IMAP - permet d'envoyer un mail avec le logiciel mail de l'utilisateur quel qu’il soit (le logiciel...et l'utilisateur aussi d'ailleurs), sans avoir à rien configurer (par exemple via le composant JEDI TJvMail)...mais MAPI est une vieille technologie qui ne supporte par les mails HTML, surtout avec des images incluses.
Devant ce manque terrible j'ai trouvé une astuce qui semble bien fonctionner, il suffit de deux lignes de code si vous composez déjà votre mail avec Indy (dans mon produit l'utilisateur a le choix entre SMTP et MAPI)
il reste juste à installer un plugin pour Thunderbird car il ne supporte toujours pas X-Unsent.
De son côté MAPI - à ne pas confondre avec IMAP - permet d'envoyer un mail avec le logiciel mail de l'utilisateur quel qu’il soit (le logiciel...et l'utilisateur aussi d'ailleurs), sans avoir à rien configurer (par exemple via le composant JEDI TJvMail)...mais MAPI est une vieille technologie qui ne supporte par les mails HTML, surtout avec des images incluses.
Devant ce manque terrible j'ai trouvé une astuce qui semble bien fonctionner, il suffit de deux lignes de code si vous composez déjà votre mail avec Indy (dans mon produit l'utilisateur a le choix entre SMTP et MAPI)
// idMessage: TidMessage begin // composer le message // ... // l'ouvrir dans le logiciel de messagerie par défaut idMessage.ExtraHeadesr.Add('X-Unsent: 1'); idMessage.SaveToFile('message.eml'); ShellExecute(0, 'open', 'message.eml', nil, nil, SW_SHOW); end;
il reste juste à installer un plugin pour Thunderbird car il ne supporte toujours pas X-Unsent.