2013-10-09 60 views
2

我有一個網頁,其中正在發送HTML電子郵件與下面的PHP代碼:PHP - 在HTML電子郵件自動下載圖像

$message = $body;//Create message body 
$sender = $sender;//Create sender 
$to = $customer_email;//Set who the email is being sent to 
$subject = 'Quote - '.$_SESSION['quote_number'];//Subject for email 
$headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";//Content-type header for mail() PHP built-in function 
$headers .= 'To: '.$to . "\r\n";//To header for mail() 
$headers .= 'From: '.$sender . "\r\n";//From header for mail() 
$mail = mail($to, $subject, $message, $headers);//Send Email 

這裏是身體與圖像的一部分:

<img src="some_img.gif" alt="Title" width="400" height="55" align="left"/> 

現在,當電子郵件發送時,圖像不會自動下載,您必須右鍵單擊並下載它。有沒有一種解決方案可以在郵件()PHP函數中自動下載這個圖片?如果不是,我能做到的最簡單的方法是什麼?

我已經對此做了一些研究,我已經看了4篇以上的文章,這裏有一些對我沒有意義,所以我沒有使用它們中的代碼。他們也很不合時宜。

How to embed images in email

Embed images for use in email message using PHP?

我不感興趣,真正複雜的代碼,對我來說我受不了類之類的東西,我只是普通的不理解他們。

回答

4

這裏是你需要的東西:

<img src="data:image/gif;base64,<BASE64_ENCODED_IMG>" alt="Title" width="400" height="55" align="left"/> 

<BASE64_ENCODED_IMG>應該是編碼some_img.gif源二進制爲Base64編碼

你可以用PHP做它的飛行結果:base64_encode(file_get_contents('/path/to/some_img.gif')); 或者得到它通過在線服務完成http://www.base64-image.de/和複製&粘貼結果。

可以在Embedding Base64 Images

編輯發現對此進一步信息:這可能是顯而易見的,但...這是不可能的郵件客戶端強制顯示圖像。但有些客戶只是避免下載他們,所以在這種情況下,這是一個有效的解決方法。

+0

我很抱歉,但我還是有點困惑。我只是將你提到的第二行代碼和我的圖片的路徑粘貼到服務器中,然後我可以將圖片的源代碼更改爲你在第一行提到的代碼?我嘗試過,但似乎沒有工作。如果你能闡述一點,我會非常感激。 – Tigerman55

+0

你需要讓你的圖像base64編碼。您可以使用PHP或使用在線服務完成此類服務,例如http://www.base64-image.de/ – Carlos

+0

如果阻止在電子郵件中顯示和/或下載圖形是提供商或客戶端功能(例如Gmail或Outlook ),那麼這將如何強制顯示圖形? –