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

6 浏览
0 Comments

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

我正在尝试使用PHPMailer发送包含图片的HTML邮件。邮件的内容是从一个包含所有信息的HTML文件加载的。然而,在发送邮件时,图片不会显示在正文中,即使我还将图片作为附件发送了。HTML 标签指向与附件相同的位置。如何使HTML指向附件,以便图片可以在正文中加载?查看PHPMailer附带的示例,我没有注意到任何区别,而且在他们的示例中,图片确实会显示出来。

0
0 Comments

问题的出现原因是:在使用PHPMailer发送邮件时,希望在邮件正文中嵌入图片,但是没有正确地添加嵌入图片的代码。

解决方法是:

1. 使用$mail->AddEmbeddedImage函数将图片添加为嵌入式附件。该函数的参数分别是图片的文件名、CID(Content-ID,用于在正文中引用该图片)和图片的名称。

2. 在邮件的正文部分,使用标签来显示嵌入的图片,其中的src属性的值为"cid:CID",CID是在添加嵌入式图片时指定的。

具体代码如下:

$mail->AddEmbeddedImage('my-photo.jpg', 'my-photo', 'my-photo.jpg');
$mail->Body = 'Embedded Image: PHPMailer Here is an image!';

如果需要在正文中显示来自远程URL的图片,可以使用$mail->addStringAttachment函数来添加远程图片。该函数的参数是通过file_get_contents函数获取远程图片的内容和指定的文件名。

具体代码如下:

$mail->addStringAttachment(file_get_contents("url"), "filename");

以上就是解决在使用PHPMailer发送邮件时,嵌入图片到邮件正文中的问题的方法。

0
0 Comments

问题出现的原因是之前的解决方案不再适用于更新的PHPMailer版本。解决方法是使用AddEmbeddedImage函数将图像添加为附件,并在img标签中使用src属性引用该附件。

在解决方法中,使用了AddEmbeddedImage函数将'img/2u_cs_mini.jpg'图像添加为名为'logo_2u'的附件。然后,在img标签中使用src属性将图像引用为'cid:logo_2u'。

关于为什么在cid末尾有一个反斜杠的问题,原作者表示自己忘记了是否有特殊原因,可能只是一些无用的字符。

另外,有人表示反斜杠可能是之前转义引号的代码留下的错误,而实际上是不需要反斜杠的。

还有人以非专家的身份解释了解决方法的原理。通过使用cid协议和Content-ID来告诉渲染引擎从哪里获取图像,使用AddEmbeddedImage函数为附件提供一个ID,以便可以引用它。

最后,某些情况下在更新PHPMailer版本后,之前使用内联数据的解决方案不再起作用,并询问是否有解释或解决方法。

0