使用PHPMailer发送电子邮件 - 将图像嵌入正文中

elv*_*spt 92 html php email image

我正在尝试使用PHPMailer发送带有图像的HTML邮件.正文从html文件加载,其中包含所有信息.

发送邮件时,图像不会出现在正文中,尽管我甚至也将图像作为附件发送.

HTML <img>标记指向与该位置相同的位置.

PHP:

$mail->AddAttachment('img/2u_cs_mini.jpg');
Run Code Online (Sandbox Code Playgroud)

如何使html指向附件,以便可以将图像加载到正文中.

看看PHPMailer附带的示例我没有注意到任何差异,在他们的情况下,图像确实出现了.

elv*_*spt 194

我找到了答案:

$mail->AddEmbeddedImage('img/2u_cs_mini.jpg', 'logo_2u');
Run Code Online (Sandbox Code Playgroud)

并在<img>标签上src='cid:logo_2u'

  • 我相信反斜杠被错误地留在了前面的代码中,它们被引用,例如`echo"src = \"cid:logo_2u \""`我不相信反斜杠是必要的. (8认同)
  • 对于谁需要非专家的解释:你需要告诉渲染引擎从哪里获取图像和使用什么协议(使用附加的图像使用de cid"协议,Content-ID).然后你使用AddEmbeddedImage为附件提供id,以便您可以引用它(注意它可以是声音和其他类型的文件). (8认同)
  • 这非常有帮助!!! 出于好奇你在哪里找到了这个?请解释. (3认同)

小智 6

根据PHPMailer 手册,完整答案是:

$mail->AddEmbeddedImage(filename, cid, name);
//Example
$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg '); 
Run Code Online (Sandbox Code Playgroud)

使用案例:

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

如果你想显示带有远程 URL 的图像:

$mail->addStringAttachment(file_get_contents("url"), "filename");
Run Code Online (Sandbox Code Playgroud)