Php 首先将文件存储在变量中时会丢失哪种img数据?
我想使用PHPMailer发送电子邮件,并使用以下HTML模板:Php 首先将文件存储在变量中时会丢失哪种img数据?,php,phpmailer,html-email,Php,Phpmailer,Html Email,我想使用PHPMailer发送电子邮件,并使用以下HTML模板: $mail->msgHTML() 使用时: $mail->msgHTML(file_get_contents('./contents.html'), __DIR__); 一切正常,电子邮件中包含图像,未附加图像。 但是如果我将文件内容存储在这样一个变量中: $body = file_get_contents('./contents.html'); $mail->msgHTML($body); 图像数据丢失。
$mail->msgHTML()
使用时:
$mail->msgHTML(file_get_contents('./contents.html'), __DIR__);
一切正常,电子邮件中包含图像,未附加图像。
但是如果我将文件内容存储在这样一个变量中:
$body = file_get_contents('./contents.html');
$mail->msgHTML($body);
图像数据丢失。
为什么在首先将文件内容读入变量时,发送的电子邮件中不包括我的图像?
-或者-丢失了什么类型(部分)的数据?
为什么我必须将其作为附件发送才能使其正常工作
供参考的HTML代码:
<td style="font-size: 12px; color:#929292; text-align:center; font-family: sans-serif;">
<img src="./logo_nav.png" alt="" sizes="" srcset="">
</td>
根据,您需要包括basedir参数:
如果不提供$basedir,相对路径将保持不变(因此可能会中断电子邮件)
完成此操作后,图像将自动内联。如果使用\uuuu DIR\uuuu
调用它,它应该可以工作:
$mail->msgHTML($body, __DIR__);
为什么在第二个示例中省略了
\uuuuuuu DIR\uuuuuu
参数?在电子邮件中,您不能仅引用图像,还必须附加图像。@tadman因此,这意味着PHPMailer在直接传递HTML文档时会附加ing“under the hood”?如果该图像在电子邮件中实际起作用,这是可能的。值得查看文档或最终电子邮件来源。谢谢!那一定是挖的时候溜出来的。但不幸的是,它仍然不起作用。当您在msgHTML()中调用file_get_contents()时,它仍然起作用吗?这不应该有任何区别,因为file_get_contents()在成功时返回字符串(或在失败时返回false)。因为它可能会失败,所以我会检查$body!==false
。请确保HTML文件的路径和basedir的路径都是正确的\uuuu DIR\uuuu
是您正在执行的脚本的路径,可能不是您正在阅读的内容的路径。