2011-08-19 56 views
0

这里是我使用的邮寄代码:我可以防止MIME嵌入式HTML图像作为附件出现吗?

<?php 
include('Mail.php'); 
include('Mail/mime.php'); 

$address = "Any old address will do"; 
$crlf = "\r\n"; 
$hdrs = array( 
    'From' => '[email protected]', 
    '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); 

?> 

的图像在电子邮件中显示出来,但它也显示了作为附件。这有点笨重,我能阻止它吗?

+1

不是您的问题的解决方案,但我总是发现将您的电子邮件图像存放在网络上更安全,并且在源代码中拥有完全限定的链接。不过,你需要托管。 –

+0

啊哈!您的意思是将其作为http://引用。谢谢!这工作。 – Tzshand

+0

我的主机服务器上的MailBLaster应用程序发送了HTML相同的问题。图像以内嵌方式显示在HTML电子邮件中,但在Mac Mail和Gmail Web浏览器界面中都显得很丑陋。其他客户不这样做。也许六个月前开始发生同样的模板。他们改变了一些,我没有! –

回答

0

我有一个问题,一些邮件客户端会将所有内联图像渲染为空框。

我发现,如果没有提供domainID,PEAR Mail_mime类将尝试修复您的Content-ID引用。

e.g. 
    [HTML] src="123456.jpg" 
    [Headers] Content-ID: <123456.jpg> 
    updates to 
    [HTML] src="cid:[email protected]" 
    [Headers] Content-ID: <[email protected]> 
    BUT 
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <123456.jpg> 
    updates to 
    [HTML] src="cid:123456.jpg" 
    [Headers] Content-ID: <[email protected]> 

这打破了HTML标签和MIME附件之间的链接。

This answer helped me out

因此包括在内容ID自己域ID发送电子邮件之前是最好的解决方案。

我发送了几个单独的电子邮件循环。每个电子邮件的目的是与每个迭代中标题中的收件人更改相同。我发现第一封电子邮件已正确发送,然后在第二封电子邮件和后续电子邮件中看到了Content-ID的清除。

在Outlook中的初始测试没有发现问题(图像很好)。只有在Gmail中进行测试才会发现问题。但是,如果Gmail检测到无效数据,则不会向您显示src属性,因此您只能通过Inspect查看Gmail中的电子邮件才能看到问题。

相关问题