Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 首先将文件存储在变量中时会丢失哪种img数据?_Php_Phpmailer_Html Email - Fatal编程技术网

Php 首先将文件存储在变量中时会丢失哪种img数据?

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); 图像数据丢失。

我想使用PHPMailer发送电子邮件,并使用以下HTML模板:

$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
是您正在执行的脚本的路径,可能不是您正在阅读的内容的路径。