2015-05-13 27 views
2

我有一個PHP腳本郵件基本上是以下幾點:PHP郵件() - 圖片並不總是加載

$result = mail($to, $subject, $message, $headers); 
if(!$result) { 
    echo "Error"; 
} else { 
    echo "Success"; 
} 

$message是一個HTML電子郵件中大多呈現細,我的電子郵件客戶端,除了圖片似乎只是偶爾加載。

的圖像都像這樣:

<img src='http://www.mywebsite.com/media/twitter.png' /> 

我不明白爲什麼有些人會加載和一些不會,當他們都成立了以同樣的方式。

我讀過最好是將圖像作爲附件嵌入到電子郵件中,但我不確定如何做到這一點。看起來你加了一條這樣的線:

<img src='cid:123456789'> 

但是,這是什麼參考?我如何編碼這樣的圖像?

任何幫助將不勝感激!謝謝

回答

1

你將不得不base64編碼文件。

我在github上找到了一個代碼示例。我沒有測試它自己,但應該給你一個很好的微調在正確的方向...

$picture = file_get_contents($file); 
    $size = getimagesize($file); 

    // base64 encode the binary data, then break it into chunks according to RFC 2045 semantics 
    $base64 = chunk_split(base64_encode($picture)); 
    echo '<img src="data:' . $size['mime'] . ';base64,' . "\n" . $base64 . '" ' . $size[3] . ' />', "\n"; 

來源:https://gist.github.com/jasny/3938108

正如一個方面說明。您正在使用網絡優化的圖像?大圖像可能被電子郵件客戶端阻止,或者只是沒有被電子郵件客戶端下載。

+1

謝謝!在瞭解了base64之後,我發現了這篇優秀的文章 - http://stackoverflow.com/a/1607263/4120885。我通過他的函數提供了我的$ message,並嵌入了圖像 – Lee