1. ホーム
  2. php

[解決済み] メールに画像を埋め込む方法

2023-08-07 18:55:35

質問

メールに画像を埋め込む必要があります。どうすればよいでしょうか?

私はサードパーティのツールを使いたくありませんし、言語固有の回答にも興味がありません(ただし、一応PHPです)。

私は、単に結果の電子メール本文のフォーマットに興味があるだけです。

どのように解決するのですか?

ご承知のように、メールメッセージとして渡されるものはすべてテキスト化されなければなりません。

  • multipart/mime メッセージでメールを作成する必要があります。
  • 物理的な画像を追加する場合、画像は base 64 エンコードされて Content-ID (cid) が割り当てられていなければなりません。もしそれが URL であれば <img /> タグで十分です (画像の URL はソース ID にリンクされている必要があります)。

典型的なメールの例は、次のようになります。

From: foo1atbar.net
To: foo2atbar.net
Subject: A simple example
Mime-Version: 1.0
Content-Type: multipart/related; boundary="boundary-example"; type="text/html"

--boundary-example
Content-Type: text/html; charset="US-ASCII"

... text of the HTML document, which might contain a URI
referencing a resource in another body part, for example
through a statement such as:
<IMG SRC="cid:foo4atfoo1atbar.net" ALT="IETF logo">

--boundary-example
Content-Location: CID:somethingatelse ; this header is disregarded
Content-ID: <foo4atfoo1atbar.net>
Content-Type: IMAGE/GIF
Content-Transfer-Encoding: BASE64

R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNv
cHlyaWdodCAoQykgMTk5LiBVbmF1dGhvcml6ZWQgZHV
wbGljYXRpb24gcHJvaGliaXRlZC4A etc...

--boundary-example--

ご覧のように Content-ID: <foo4atfoo1atbar.net> ID にマッチするのは <IMG>SRC="cid:foo4atfoo1atbar.net" . そうすれば、クライアントのブラウザは画像を添付ファイルとしてではなく、コンテンツとしてレンダリングします。

これが役立つことを願っています。