169 votes

intégration d'une image dans un courriel html

J'essaie d'envoyer un email html multipart/related avec des images gif intégrées. Cet email est généré à l'aide d'Oracle PL/SQL. Mes tentatives ont échoué, l'image apparaissant sous la forme d'un X rouge (dans Outlook 2007 et yahoo mail).

J'envoie des courriels en html depuis un certain temps, mais j'ai maintenant besoin d'utiliser plusieurs images gif dans le courriel. Je peux les stocker sur l'un de nos serveurs web et créer un lien vers elles, mais de nombreux clients de messagerie ne les afficheront pas automatiquement et il faudra soit modifier les paramètres, soit les télécharger manuellement pour chaque e-mail.

Je pense donc qu'il faut intégrer l'image. Mes questions sont les suivantes :

  1. Qu'est-ce que je fais de travers ?
  2. L'approche de l'intégration est-elle la bonne ?
  3. Y a-t-il d'autres options si je dois utiliser de plus en plus d'images ? Les pièces jointes ne fonctionnent pas, car les images sont généralement des logos et des icônes qui n'ont pas de sens dans le contexte du message. De plus, certains éléments de l'e-mail sont des liens vers un système en ligne, de sorte que la génération d'un PDF statique et sa mise en pièce jointe ne fonctionneront pas (à ma connaissance en tout cas).

extrait :

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 le même algo que celui utilisé pour créer les données d'en-tête) et voir l'image dans Firefox/IE.

Je tiens également à préciser qu'il ne s'agit PAS de spam, les courriels sont envoyés à des clients spécifiques qui les attendent quotidiennement. Le contenu est basé sur des données et non sur des publicités.

0voto

Klendatho Points 73

Un indice supplémentaire à l'article de Pavel Perna qui m'a beaucoup aidé (je ne peux pas commenter avec 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. En guise de solution de contournement, utilisez "Content-Disposition : attachement" à la place. Outlook 2016 n'affichera pas les images en tant que pièces jointes utilisées dans le message, bien qu'elles utilisent "Content-Disposition : attachement".

0voto

Essayez de résoudre ce problème avec Context.Request :

<img width="150" height="60" src="@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.PathBase}/images/logo.png")" />

Dans mon cas, lorsque j'ai utilisé Content-ID, j'ai eu cette image en tant que pièce jointe, ce qui n'était pas la meilleure solution.

-34voto

Claudio Viz Points 1

Si vous utilisez Outlook pour envoyer une image statique avec un lien hypertexte, vous pouvez facilement utiliser Word.

  1. Ouvrir MS Word
  2. Copier l'image sur une page blanche
  3. Ajouter un lien hypertexte à l'image (Ctrl + K)
  4. Copiez l'image dans votre courrier électronique

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X