J'essaie d'envoyer un e-mail html en plusieurs parties / associé avec des images gif intégrées. Cet e-mail est généré à l'aide d'Oracle PL / SQL. Mes tentatives ont échoué, l'image s'affichant sous la forme d'un X rouge (dans Outlook 2007 et Yahoo Mail)
J'envoie des e-mails html depuis un certain temps, mais mes exigences sont maintenant d'utiliser plusieurs images gif dans l'e-mail. Je peux les stocker sur l'un de nos serveurs Web et simplement les relier, mais de nombreux utilisateurs de clients de messagerie ne les afficheront pas automatiquement et devront soit modifier les paramètres, soit les télécharger manuellement pour chaque e-mail.
Donc, mes pensées sont d'intégrer l'image. Mes questions sont:
- Qu'est-ce que je fais de mal ici?
- L'approche d'intégration est-elle la bonne?
- Y a-t-il d'autres options si j'ai besoin d'utiliser de plus en plus d'images? Les pièces jointes ne fonctionneront pas, car les images sont généralement des logos et des icônes qui n'auront aucun sens hors du contexte du message. De plus, certains éléments de l'e-mail sont des liens vers un système en ligne, donc générer un PDF statique et l'attacher ne fonctionnera pas (à ma connaissance de toute façon).
fragment:
MIME-Version: 1.0
To: me@gmail.com
BCC: me@yahoo.com
From: email@yahoo.com
Subject: Test
Reply-To: email@yahoo.com
Content-Type: multipart/related; boundary="a1b2c3d4e3f2g1"
--a1b2c3d4e3f2g1
content-type: text/html;
<html>
<head><title>My title</title></head>
<body>
<div style="font-size:11pt;font-family:Calibri;">
<p><IMG SRC="cid:my_logo" alt="Logo"></p>
... more html here ...
</div></body></html>
--a1b2c3d4e3f2g1
Content-Type: image/gif;
Content-ID:<my_logo>
Content-Transfer-Encoding: base64
Content-Disposition: inline
[base64 image data here]
--a1b2c3d4e3f2g1--
Merci beaucoup.
BTW: Oui, j'ai vérifié que les données base64 sont correctes, car je peux intégrer l'image dans le html lui-même (en utilisant la même utilisation d'algo pour créer des données d'en-tête) et voir l'image dans Firefox / IE.
Je dois également noter que ce n'est PAS pour le spam, les e-mails sont envoyés à des clients spécifiques qui l'attendent quotidiennement. Le contenu est basé sur les données et non sur les publicités.
<img src="URL" />
fonctionné pour moi, mais c'était une image que j'ai hébergée hors site. Cela ne fonctionne pas pour vous?Réponses:
Essayez de l'insérer directement, de cette façon, vous pouvez insérer plusieurs images à différents endroits dans l'e-mail.
Et pour rendre cet article utile aux autres: Si vous n'avez pas de chaîne de données base64, créez-en une facilement à l'adresse: adresse http://www.motobit.com/util/base64-decoder-encoder.asp à partir d'un fichier image .
Le code source de l'e-mail ressemble à ceci, mais je ne peux vraiment pas vous dire à quoi sert cette limite:
// EDIT: Oh, je me rends compte que si vous insérez le premier extrait de code de mon message pour écrire un e-mail avec thunderbird, thunderbird change automatiquement le code html pour qu'il ressemble à peu près au deuxième code de mon message.
la source
L'autre solution consiste à attacher l'image en tant que pièce jointe, puis à la référencer du code html à l'aide de cid.
Code HTML:
Code C #:
la source
Je ne trouve aucune des réponses utiles ici, donc je propose ma solution.
Le problème est que vous utilisez
multipart/related
comme type de contenu ce qui n'est pas bon dans ce cas. J'utilisemultipart/mixed
et à l'intérieurmultipart/alternative
(cela fonctionne sur la plupart des clients).La structure du message doit être la suivante:
Alors ça fonctionnera
la source
Si cela ne fonctionne pas, vous pouvez essayer l'un de ces outils qui convertissent l'image en tableau HTML (attention cependant à la taille de votre image):
la source
Utiliser Base64 pour incorporer des images en HTML est génial. Néanmoins, veuillez noter que les chaînes base64 peuvent augmenter la taille de votre e-mail.
Par conséquent,
1) Si vous avez beaucoup d'images, le téléchargement de vos images sur un serveur et le chargement de ces images à partir du serveur peut réduire la taille de votre e-mail. (Vous pouvez obtenir de nombreux services gratuits via Google)
2) S'il n'y a que quelques images dans votre courrier, l'utilisation de chaînes base64 est certainement une option géniale.
Outre les choix fournis par les réponses existantes, vous pouvez également utiliser une commande pour générer une chaîne base64 sous Linux:
la source
Je sais que c'est un ancien message, mais les réponses actuelles ne traitent pas du fait que Outlook et de nombreux autres fournisseurs de messagerie ne prennent pas en charge les images en ligne ou les images CID. Le moyen le plus efficace de placer des images dans des e-mails est de les héberger en ligne et de placer un lien vers ces images dans l'e-mail. Pour les petites listes de diffusion, une boîte de dépôt publique fonctionne très bien. Cela réduit également la taille de l'e-mail.
la source
Vous avez besoin de 3 limites pour que les images en ligne soient entièrement conformes.
Tout va à l'intérieur du
multipart/mixed
.Utilisez ensuite le
multipart/related
pour contenir vos enmultipart/alternative
-têtes et vos en-têtes de pièce jointe d'image.Enfin, incluez vos pièces jointes téléchargeables dans la dernière limite de
multipart/mixed
.la source
Il existe en fait un très bon article de blog qui répertorie les avantages et les inconvénients de trois approches différentes de ce problème par Martyn Davies. Vous pouvez le lire sur https://sendgrid.com/blog/embedding-images-emails-facts/ .
J'aimerais ajouter une quatrième approche utilisant des images de fond CSS.
Ajouter
au corps de votre e-mail et à une classe css comme:
la source
Pour ceux qui n'ont pas pu faire fonctionner l'une de ces solutions: Envoyer une image en ligne par e-mail En suivant les étapes décrites dans la solution proposée par @ T30, j'ai pu afficher mon image en ligne sans être bloquée par Outlook (méthodes précédentes, elle était bloquée) . Si vous utilisez l'échange comme nous le faisons, alors aussi lorsque vous faites:
vous devrez lui transmettre l'hôte de l'URL de votre service d'échange. Autre que cela, cette solution devrait vous permettre d'envoyer facilement des images intégrées.
la source
Il peut être intéressant qu'Outlook et Outlook Express puissent générer ces formats de courrier électronique d'images en plusieurs parties, si vous insérez les fichiers image à l'aide de la fonction de menu Insérer / Image.
De toute évidence, le type d'e-mail doit être défini sur HTML (et non sur du texte brut).
Toute autre méthode (par exemple, glisser / déposer ou tout appel de ligne de commande) entraîne l'envoi de l'image ou des images en pièce jointe.
Si vous vous envoyez ensuite un tel e-mail, vous pouvez voir comment il est formaté! :)
FWIW, je recherche un exécutable Windows autonome qui fait des images en ligne à partir du mode ligne de commande, mais il semble n'y en avoir aucun. C'est un chemin que beaucoup ont emprunté ... On peut le faire avec par exemple Outlook Express, en lui passant un fichier .eml correctement formaté.
la source
Ce qui suit est un code de travail avec deux façons d'y parvenir:
la source
Un indice supplémentaire à l'article de Pavel Perna qui m'a beaucoup aidé (je ne peux pas commenter ma réputation, c'est pourquoi je poste ceci comme réponse): dans certaines versions de Microsoft Exchange, la disposition du contenu en ligne est supprimée ( voir cet article de Microsoft ). L'image ne fait tout simplement pas partie du courrier que l'utilisateur voit dans Outlook. Pour contourner ce problème, utilisez plutôt "Content-Disposition: attachement". Outlook 2016 n'affichera pas les images en tant que pièce jointe qui sont utilisées dans le message électronique, bien qu'elles utilisent le «Content-Disposition: attachement».
la source
Si vous utilisez Outlook pour envoyer une image statique avec un lien hypertexte, un moyen simple serait d'utiliser Word.
la source