以下是我用来邮寄的代码:
<?php
include('Mail.php');
include('Mail/mime.php');
$address = "Any old address will do";
$crlf = "\r\n";
$hdrs = array(
'From' => 'do-not-reply@mydomain.com',
'Subject' => 'Mail_mime test message'
);
$mime = new Mail_mime($crlf);
$mime->addHTMLImage("emailHeader.jpg", "image/jpg");
$cid=$mime->_html_images[0]['cid'];
$html = '<html><body><center><img src="cid:'.$cid.'">This image shows up just fine</center></body></html>';
$text = 'Plain text version of email';
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$body = $mime->get();
$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send($address, $hdrs, $body);
?>
图片显示在电子邮件中,但它也会显示为附件。这有点笨重,我能预防吗?
答案 0 :(得分:0)
我遇到一个问题,其中一些邮件客户端会将所有内嵌图像渲染为空框。
我发现如果没有提供domainID,PEAR Mail_mime类将尝试为您修复Content-ID引用。
e.g.
[HTML] src="123456.jpg"
[Headers] Content-ID: <123456.jpg>
updates to
[HTML] src="cid:123456.jpg@domain.com"
[Headers] Content-ID: <123456.jpg@domain.com>
BUT
[HTML] src="cid:123456.jpg"
[Headers] Content-ID: <123456.jpg>
updates to
[HTML] src="cid:123456.jpg"
[Headers] Content-ID: <123456.jpg@domain.com>
它打破了HTML标记和MIME附件之间的链接。
因此,在发送电子邮件之前自己在Content-ID中包含domainID是最佳解决方案。
我在循环中发送了几封单独的电子邮件。每封电子邮件都与每次迭代更改标题中的收件人相同。我发现第一封电子邮件已正确发送,然后在第二封及后续电子邮件中看到了Content-ID的更改。
Outlook中的初始测试没有发现问题(图像很好)。只有在Gmail中进行测试才能发现故障。但是,如果Gmail检测到无效数据,则不会向您显示src属性,因此您只能通过检查Gmail中的电子邮件来查看问题。