Quelqu'un peut-il connaître un bon exemple de génération d'e-mail HTML avec des images intégrées et une partie de texte alternative? Je dois générer des rapports tabulaires dans HTML et souhaiterions intégrer des logos et d'autres images. P>
Je crois qu'Ady peut faire cela avec un travail, mais j'espérais que quelqu'un puisse me signaler un bon point de départ. Je suis ouvert à l'utilisation de bibliothèques autres que les solutions Indy et commerciales fournies à la source sont disponibles. La qualité et le temps de mettre en œuvre sont plus importants que le coût. La solution doit également prendre en charge la livraison basée sur SMTP à un échangeur de messagerie. P>
L'autre élément de ma liste de souhaits est de pouvoir exploiter Fasastreps, TrochView ou un outil similaire pour générer le contenu du message HTML. Il existe des filtres de sortie HTML disponibles pour les deux, mais je n'ai pas eu l'occasion de faire des tests. Tout retour sur ce sujet serait apprécié. P>
Merci d'avance! p>
David P>
5 Réponses :
Nous avons essayé il y a cette année avec Indy et CID intégrée: images comme ceci: https://forums.codeear.com/thread.jspa?ThreadId=17473 p>
Nous n'avons jamais été stables, chaque fois qu'il y avait un autre lecteur de courrier qui a été mis à l'arrière (si nous le faisions travailler dans Outlook, alors Thunderbird ne l'a pas accepté, ou Outlook Express, ou etc, etc.). P>
À la fin, nous l'avons fait avec .NET en utilisant aspnetemail et cela a fonctionné comme un charme. p>
- Jeroen P>
Avez-vous déjà comparé les courriels générés par Indy avec les courriels générés par AspnetTemail pour voir ce qui est différent entre eux?
Il y a des années, nous avons fait. Mais nous n'avons pas conservé les notes en raison de la pression du projet. Le projet a vécu depuis quelques années, mais maintenant est mort. Donc aujourd'hui, cela pourrait tout aussi bien travailler avec Indy.
Tout dépend du nombre de clients de messagerie distants que vous devez pouvoir soutenir. Je crois que les bibliothèques Delphi bien connues qui prennent en charge SMTP / MIME feront un travail raisonnable, mais ils peuvent vous laisser des problèmes de soutien lorsque l'un de vos utilisateurs de messagerie constate que leur destinataire ne peut pas voir un e-mail correctement formaté. P >
Je recommande de visiter Jacob Palme's site qui vous donnera une idée de certains des problèmes que vous pouvez rencontrer. C'est un peu obsolète, peut-être, mais en résumé, cependant, vous construisez et envoyez votre courriel MIME complexe, vous rencontrerez un ou plusieurs clients de messagerie qui ne peuvent pas gérer correctement la syntaxe. Le site a également des liens vers certains exemples utiles de constructions que vous pouvez examiner et tester. P>
Je ne veux pas impliquer que vous devez rouler votre propre logique comme nous l'avons fait: une bonne solution emballée réussira probablement dans la grande majorité des cas. Nous avons écrit notre propre code Delphi pour gérer cela il y a quelques années. Je vais donc le laisser aux autres de vous donner des informations à jour sur ce qui se trouve sur l'étagère maintenant. P>
Lisez les articles suivants sur le site Web d'Indy, ils expliquent la manière appropriée de remplir un TidmesMesaage Code> pour HTML: P>
L'Indy MesssageBuilder semble être la voie à suivre. Le seul problème de codage potentiel que je vois en fonction des exemples est que les fichiers sont en cours de lecture du disque. J'ai besoin d'utiliser des flux car les données et les images vivent dans une base de données. Je vérifierai la source pour voir si d'autres méthodes d'ajout d'images sont prises en charge et apportez les ajustements nécessaires si non.
À l'aide de TidMessage, TidText et TidatachmentMemory, vous pouvez créer le message et les pièces jointes à l'aide de flux.
TidmessageBuilderHTML prend en charge l'utilisation de données de pièces jointes liées au HTML, telles que des images. La propriété TidMessageBuilderhtml.htmlfiles a des versions surchargées d'ajout () pour les noms de fichiers de fichiers et ttstream. L'attachement des données non liées ne sont toutefois pas encore en charge de Tstream.
J'ai mis à jour la propriété TidCusTommessageBuilder.attachments pour prendre en charge les données ttstream maintenant.
@Remy - Merci, ça fait l'affaire. Je suppose que je devrai utiliser le dernier code de svn :)
Cela fonctionne, mais existe-t-il un moyen de ne pas avoir les images intégrées apparaissent également comme des pièces jointes? Cela confond le destinataire.
Les images intégrées ne doivent pas apparaître comme pièces jointes. Donc, soit l'e-mail est mal formé, soit le lecteur de courrier électronique du client n'interprète pas correctement les pièces jointes. Si les images apparaissent intégrées dans le HTML, cela suggère ce dernier.
Ces jours-ci, j'utilise le client de messagerie du composant intelligent, bien que non libre. P>
Les contrôles Internet Turbopower (OpenSource) ont fonctionné très bien pour moi dans le passé. P>
Merci, je n'ai pas regardé leurs composants depuis plusieurs années. Le composant intelligent est certainement devenu très caractéristique riche, mais l'étiquette de prix est un peu riche si vous avez vraiment besoin de certaines des fonctionnalités avancées.
function data64(const filename:string): ansistring; // uses Classes, IdGlobalProtocols, EncdDecd; const crlf = #13#10; begin result := ''; with TIdMimeTable.Create do try result := 'data:' + GetFileMIMEType(filename) + ';'; finally Free; end; with TMemoryStream.Create do try LoadFromFile(filename); result := result + 'base64,' + crlf + EncodeBase64(Memory,Size); finally Free; end; end;