web-dev-qa-db-ja.com

ほとんどのメールクライアントと互換性のある画像が埋め込まれた電子メールを作成する方法

送信メールに画像を埋め込むことができるシステムを作成しました。

システムが作成する元のメッセージは次のとおりです。この例には、画像の添付ファイルと埋め込み画像が含まれています。

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--

追加する必要がある別のヘッダーまたは従うべきルールはありますか?

私は1つのことに気づいた ...私はそれが私の問題の一部であり、Gmailの一部であると推測します。とにかく、私はそれをやめさせたい

メールがGmailに届くと、

画像は表示されません。
以下の画像を表示-常に次の画像を表示します...

埋め込まれた画像は、画像の添付ファイルとして表示されます(他の画像の添付ファイルと同様)

[下の画像を表示]をクリックすると、画像がメールの本文に表示されますが、[添付ファイル]セクションからは削除されません。

受信ボックスに戻ってメールに戻ると、問題ありません。

なぜそうなるのかわかりません。 (外部URLからの)リンクされた画像ではなく、GmailからGmailに埋め込まれた画像を送信する場合は発生しません。それは私が間違ったことをしているかもしれないと私に思わせるものであり、他の受信者に影響を与える可能性があることを恐れています。

29
Bryan Field

あなたが使用しているものとまったく同じヘッダーで成功しましたが、次の違いがあります。

29
dkarp

Gmailでインライン画像の読み込みに問題があり、PHPのPEAR Mail_Mimeライブラリを誤って使用していることがわかりました。すでに述べたように、Content-IDはメッセージIDのようにフォーマットする必要があります。 PEAR Mail_Mimeライブラリは、Content-IDが指定されていない場合、Content-IDにdomainIDを追加しようとします。また、電子メールのHTML本文のこれらのContent-IDを正規表現に置き換えて、私の場合、このステップは失敗し、HTMLタグからMIME添付ファイルへのリンクが壊れていたため、Gmailがインラインで画像を表示することを拒否することは完全に正しいことでした。しかしながら。

2