使用PHPMailer发送电子邮件-在正文中嵌入图像
问题的出现原因是:在使用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: Here is an image!';
如果需要在正文中显示来自远程URL的图片,可以使用$mail->addStringAttachment函数来添加远程图片。该函数的参数是通过file_get_contents函数获取远程图片的内容和指定的文件名。
具体代码如下:
$mail->addStringAttachment(file_get_contents("url"), "filename");
以上就是解决在使用PHPMailer发送邮件时,嵌入图片到邮件正文中的问题的方法。
问题出现的原因是之前的解决方案不再适用于更新的PHPMailer版本。解决方法是使用AddEmbeddedImage函数将图像添加为附件,并在img标签中使用src属性引用该附件。
在解决方法中,使用了AddEmbeddedImage函数将'img/2u_cs_mini.jpg'图像添加为名为'logo_2u'的附件。然后,在img标签中使用src属性将图像引用为'cid:logo_2u'。
关于为什么在cid末尾有一个反斜杠的问题,原作者表示自己忘记了是否有特殊原因,可能只是一些无用的字符。
另外,有人表示反斜杠可能是之前转义引号的代码留下的错误,而实际上是不需要反斜杠的。
还有人以非专家的身份解释了解决方法的原理。通过使用cid协议和Content-ID来告诉渲染引擎从哪里获取图像,使用AddEmbeddedImage函数为附件提供一个ID,以便可以引用它。
最后,某些情况下在更新PHPMailer版本后,之前使用内联数据的解决方案不再起作用,并询问是否有解释或解决方法。