2014-01-23 24 views
0

我一直在使用PHP的內置mail()函數發送帶內嵌圖像的多部分郵件消息。我的客戶通知我他們需要使用通過身份驗證的SMTP發送郵件,但他們堅持我們無法修改其服務器環境(因此我無法將PHP配置爲使用SMTP)。phpmailer類 - 內嵌嵌入圖像但不是來自文件源

因此,我現在使用phpmailer類來發送消息。所有工作,除了嵌入式圖像。我已閱讀文檔並理解要嵌入圖像,我只需致電:

$mail->AddEmbeddedImage('path/to/image.jpg', 'CID_identifier'); 

太好了,對大多數情況都有意義。但是,我嵌入的圖像不是服務器文件系統上的靜態文件。

ob_start(); 
require_once('_gen_piechart.php'); 
$base_64 = base64_encode(ob_get_contents()); 
ob_end_clean(); 

雖然我理解它可能工作,我不希望寫入文件的圖像,包括:它是動態的,我寫了一個腳本,可以通過使用輸出黃油的渲染,以及電子郵件的腳本內捕獲在出站郵件中,然後unlink()

有沒有人遇到過這種情況,並提出一個嵌入圖像數據的解決方案?我沒有看到用於嵌入除文件系統以外的圖像數據的phpmailer類方法。

回答

4

This是你需要的。它允許編碼 二進制文件(我假設base64?) 字符串值而不是文件。

$mail->AddStringEmbeddedImage($base_64, 'CID_identifier'); 
+0

漂亮!我找到了'addStringAttachment'函數,但不知道這個函數。 –

+2

對於任何可能存在此問題的人來說都是一個重要提示:'addStringEmbeddedImage()'和'addStringAttachment()'需要一個原始字符串* NOT *已經base64_encoded。 –