PHP 嵌入图像损坏



嗨,我正在尝试在电子邮件中嵌入图像,这是我的php代码:

$mail1->SMTPDebug = 2;                                 
$mail1->isSMTP();                                     
$mail1->Host = 'smtp.gmail.com';  
$mail1->SMTPAuth = true;                               
$mail1->Username = 'email@gmail.com';                
$mail1->Password = 'password';                           
$mail1->SMTPSecure = 'tls';                   
$mail1->Port = 587;
$mail1->setFrom('auto-reply@email.ca', '123');                  
$mail1->addAddress('email@gmail.com');     
$mail1->isHTML(true);                                 
$mail1->Subject = 'Thanks For Reaching us!';
$mail1->Body    = '
<p> This is a test picture  <img src="img/logo.png"/>  </p>              
' ;
$mail1->send();
exit;

当我在本地主机上运行此代码时,电子邮件显示文本,但带有图像的损坏符号,并且我已经尝试了所有方法,包括

$mail1->AddEmbeddedImage('imglogo.png', "two", "logo.png");

但是,它根本不显示图像,有人知道如何解决这个问题吗?

这将失败,因为它是相对路径,并且电子邮件没有要相对的基本 URL(这不是您定位嵌入图像的方式(,因此它不起作用。

$mail1->Body = '<p>This is a test picture <img src="img/logo.png"/></p>';

请改为执行以下操作:

$mail1->Body = '<p>This is a test picture <img src="cid:two"/></p>';

然后它将与:

$mail1->AddEmbeddedImage('imglogo.png', "two", "logo.png");

因为cid值匹配。值得使用绝对路径来确定从何处加载,并且可以检查调用的返回值以确保它能够读取文件。

最新更新