2009-07-21 78 views
1

我想用PHPMAiler發送簡報。該通訊確實有效,但我想知道是否有更好的選擇來做到這一點。用HTML電子郵件將PHPMailer嵌入圖像的正確方法是什麼?

我所擁有的是。

  1. HTML頁面
  2. 圖片

現在我的代碼如下

$mail = new PHPMailer(); 

//Adding the body 
$body = file_get_contents('template/index.htm'); 

$mail->Subject = "PHPMailer Test Subject via mail(), basic"; 

$mail->AltBody = "To view this message, please use an HTML compatible email viewer!"; 


$mail->SetFrom('xxxxxxx', 'xxxxxxxxxx'); 

$address = "[email protected]"; 
$mail->AddAddress($address, "xxxxxxx"); 

$mail->AddEmbeddedImage("template/images/bullet_point.gif","1"); 
$mail->AddEmbeddedImage("template/images/template_1_01.gif","2"); 
$mail->AddEmbeddedImage("template/images/template_1_03.gif","3"); 


$mail->MsgHTML($body); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

我使用的file_get_contents來獲取HTML頁面,並AddEmbeddedImage嵌入圖片,現在有沒有隻將HTML頁面傳遞給PHPMailer的方法,PHP Mailer會自動嵌入這些圖像?

+0

您可以從外部來源加載圖像,如果這符合您的需求。發送和接收的郵件會更小。 – usoban 2009-07-21 12:31:15

+0

這在我的情況下不起作用,因爲圖像可以在任何階段移動 – Roland 2009-07-21 12:33:16

回答

1

我不認爲你正在嘗試做什麼是可能的(自動添加所需圖像)與PHPMailer「從頭開始」。

也許你可以解析HTML以獲取它鏈接到的圖像列表?至少有兩種方式:

  • 使用rexexes;如果您嘗試從HTML中提取數據,通常不是最好的方法 - 而且您是^^
  • 另一種(可能)更好的方法是使用DOMDocument::loadHTML對從您的文件加載的HTML內容(輸出?file_get_contents),並與DOMDocument方法(和,爲什麼不呢,DOMXPath

工作來獲取圖像,我想你有你的電子郵件<img>標籤,與src屬性;目標是找到那些值;-)

一旦你有了圖像路徑列表,你可以迭代它們,並在它們每一個上調用$mail->AddEmbeddedImage

我想這將工作得很好(雖然沒有嘗試,但我不明白爲什麼它不會)。作爲一個方面說明,另一種方法是將圖像保存在服務器上幾天/每週/月,而不是將它們包含在郵件中;它將使郵件較小,這意味着:

  • 較少的帶寬就在你身邊度過了(如果你正在發送大量的郵件,它可以代表帶寬相當的大寫金額)
  • 花在每個人少的帶寬你的客戶的一面 - 這是他們不錯過^^
  • 自己的硬盤;-)

,並確保圖像不會將被刪除/替換之前在服務器上使用更少的空間幾個星期/月,你可以爲每個時事通訊創建一個新目錄,包含它的圖像 - 和偶爾會刪除X以前的目錄。

相關問題