2011-08-19 54 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中的電子郵件才能看到問題。

相關問題