PHPMailerでメールを送信する-本文に画像を埋め込む


97

PHPMailerを使用して、画像付きのHTMLメールを送信しようとしています。本文は、すべての情報を含むhtmlファイルから読み込まれます。

メールを送信すると、添付ファイルとして送信しても画像が本文に表示されません。

HTML <img>タグがその場所と同じ場所を指している。

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');

htmlを添付ファイルに指定して、画像を本文に読み込むにはどうすればよいですか。

PHPMailerに付属の例を見ると、違いはわかりません。その場合、画像が表示されます。

回答:


206

私は答えを見つけました:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');

そして上の<img>タグプットsrc='cid:logo_2u'


3
それは完全に役立ちます!!! 好奇心から、どこでこれを見つけましたか?説明してください。
2012

なぜcidの最後にバックスラッシュがあるのですか?
プラン

私はずっと前にこれをしました、理由さえあったかどうか覚えていません。あるとは思いません。ほんの少しのごみです。
elvispt

8
バックスラッシュは引用符をエスケープした以前のコードから誤ってそこに残されたecho "src=\"cid:logo_2u\""と思います。バックスラッシュが必要だとは思いません。
残酷な

8
エキスパートではない人からの説明が必要な場合:画像をどこから、どのプロトコルで取得するかをレンダリングエンジンに伝える必要があります(添付された画像を使用するには、de cid "protocol、Content-IDを使用します。 AddEmbeddedImageを使用して、添付ファイルにIDを付け、参照できるようにします(サウンドや他のタイプのファイルである可能性があることに注意してください)
PhoneixS

3

PHPMailer Manualによると、完全な答えは次のようになります:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 

使用事例 :

$mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png");
$mail->Body = 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!';

リモートURLで画像を表示したい場合:

$mail->addStringAttachment(file_get_contents("url"), "filename");
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.