2009-02-11 93 views
5

有沒有辦法將圖像附加到在PHP中創建的HTML格式的電子郵件中?PHP將圖像附加到電子郵件

我們需要確保發送給可能在閱讀電子郵件時無法訪問互聯網的客戶發送的電子郵件中的公司徽標(他們顯然會下載文件)。

回答

11

試試PEAR Mail_Mime包,它可以是embed images for you

您需要使用addHTMLImage()方法並傳遞內容標識(cid),該標識是您在img的src屬性中使用的唯一字符串,作爲cid: URL。例如:

include('Mail.php'); 
include "Mail/mime.php"; 


$crlf = "\r\n"; 
$hdrs = array( 
     'From' => '[email protected]', 
     'Subject' => 'Mail_mime test message' 
     ); 

$mime = new Mail_mime($crlf); 

//attach our image with a unique content id 
$cid="mycidstring"; 
$mime->addHTMLImage("/path/to/myimage.gif", "image/gif", "", true, $cid); 

//now we can use the content id in our message 
$html = '<html><body><img src="cid:'.$cid.'"></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('[email protected]', $hdrs, $body); 
+1

媽的,你20秒快速;-) – 2009-02-11 13:54:32

2

它可能是最容易使用某些庫可以處理電子郵件附件。例如,PEAR的Mail_Mime

0

你是自己動手,還是使用 預製課程?我推薦PHP 梅勒[0]我自己,也有 PEAR :: Mail_Mime [1]等 谷歌會很樂意幫你 找到。我一直在使用PHP梅勒 發送帶有嵌入式圖像信息[2] 多年順利,但牢記 每個圖像巨大增加 電子郵件的帶寬權重,所以 通常它不應該被用於 任何散裝物品。並回聲比爾, 也使用純文本的選擇。

[0] http://phpmailer.sourceforge.net/

[1] http://pear.php.net/manual/en/package.mail.mail-mime.php

[2] http://phpmailer.sourceforge.net/docs/PHPMailer/PHPMailer.html#AddEmbeddedImage

http://lists.evolt.org/archive/Week-of-Mon-20060612/183029.html

1

PEAR的Mail_Mime包採取的是你在這裏後,在做什麼。 - 而不是僅僅作爲

$mime = new Mail_mime("\n"); 

$mime->setTXTBody($msg_text); 
$mime->setHTMLbody($msg_html); 

// Add gif as attachment to mail 
$mime->addAttachment("/path/to/image/smile.gif", "image/gif"); 

$body = $mime->get(); 
$headers = $mime->headers($headers); 
$mail->send("[email protected]", $headers, $body); 

如果你正在尋找你的標誌,在電子郵件的特定位置顯示:

一旦你設置你的消息了,添加附件作爲一樣簡單附件 - 你可以做到以下幾點:

// In your message html: 
<img src='logo.gif' alt='Our logo' /> 

// PHP: 
$mime->addHTMLImage('/path/to/image/logo.gif'); 

這種方法會有不同的結果取決於你的用戶的郵件客戶端上,所以它發送試穿虛擬Gmail,雅虎和Hotmail帳戶測試您的格式之前。

0

這裏有足夠多的答案可以幫助解決您的具體問題,但我只是認爲可能值得指出的是,您可能有一個較大的問題,您沒有考慮。

具體來說 - 通過PHP發送的電子郵件寫滿了潛在的問題,只有當你對錯誤有什麼好的想法時才應該這樣做。

如果你在發送電子郵件相當密集,我會強烈建議通過一個專用的電子郵件營銷客戶端或執行許多電子郵件營銷API的在那裏的一個,將它發送給你做規劃。 (mailchimp顯然是一個體面的一個)。