web-dev-qa-db-fra.com

Comment créer un e-mail avec des images intégrées compatible avec la plupart des clients de messagerie

Nous avons créé un système qui permet d'incorporer une image dans un e-mail sortant.

Voici le message original créé par notre système. Cet exemple contient une pièce jointe d'image et une image incorporée.

Mime-Version: 1.0
From: ...
To: ...
CC: 
Subject: test
x-sender: ...
x-mailer: ...
Content-Type: multipart/mixed; boundary="-------------...A128803765634794"

---------------...A128803765634794
Content-Type: multipart/related; boundary="-------------...B128803765634796"

---------------...B128803765634796
Content-Type: text/html; charset="UTF-8"

<p style="margin: 0; padding: 0"><img src="cid:083.gif" alt="" /></p>

---------------...B128803765634796
Content-type: image/gif; name="083.gif"
Content-ID: <083.gif>
X-Attachment-Id: 083.gif
Content-Disposition: Embedded; filename="083.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeB128803765634796--
---------------PineappleCodeA128803765634794
Content-type: image/gif; name="waiting.gif"
Content-Disposition: Attachment; filename="waiting.gif"
Content-transfer-encoding: base64

............................................................................
............................................................................
......................................................
---------------PineappleCodeA128803765634794--

Y a-t-il un autre en-tête à ajouter ou une règle à suivre?

J'ai remarqué une chose ... Je suppose que c'est en partie mon problème et en partie Gmails. mais en tout cas je voudrais que ça cesse de se produire

Lorsque l'e-mail est reçu dans Gmail, je reçois

Les images ne sont pas affichées.
Afficher les images ci-dessous - Toujours afficher les images de ...

L'image intégrée est ensuite affichée sous forme de pièce jointe à l'image (tout comme mon autre pièce jointe à l'image)

Je clique sur Afficher les images ci-dessous et mon image apparaît dans le corps de l'e-mail mais n'est pas supprimée de la section Pièces jointes.

Si je reviens à ma boîte de réception et à l'e-mail, tout va bien.

Je ne vois pas pourquoi il fait ça. Ce n'est pas une image liée (à partir d'une URL externe) et cela ne se produit pas lors de l'envoi d'images intégrées de Gmail à Gmail. C'est ce qui me fait penser que je ferais quelque chose de mal et je crains que cela puisse affecter d'autres bénéficiaires.

29
Bryan Field

J'ai réussi avec exactement les mêmes en-têtes que vous utilisez, avec les différences suivantes:

29
dkarp

J'avais du mal à charger des images en ligne dans Gmail et j'ai constaté que j'utilisais mal la bibliothèque PEAR Mail_Mime en PHP. Comme déjà indiqué, le Content-ID doit être formaté comme un identifiant de message. La bibliothèque PEAR Mail_Mime essaiera d'ajouter un ID de domaine à votre Content-ID si celui-ci n'est pas fourni. Il tentera également de regex remplacer ces Content-ID dans le corps HTML de l'e-mail pour maintenir le lien. Dans mon cas, cette étape échouait, ce qui a fini par rompre le lien de la balise HTML vers la pièce jointe MIME. Il était donc parfaitement correct pour Gmail de refuser d'afficher l'image en ligne. Il a affiché l'image en tant que pièce jointe pourtant.

2
Kim Anthony Groves