2013-04-18 75 views
0

我使用php發送電子郵件。根據我的建議,我有3張圖像作爲表格背景。問題是我在Outlook和Adroid Gmail應用程序中查看時看不到電子郵件圖像。Php電子郵件中未顯示Outllook和Android Gmail中的圖像

下面是使用的代碼:

$headers = "From: Furniture \r\n"; 
$headers .= "Reply-To: [email protected] \r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

$message = '<html><body style="margin: 0;">'; 
$message .= '<table background="http://mysite.com/emailfinal1.jpg" border="0" width="650" height="506" style="font-family: arial, tahoma;color: black; margin: 0;"> 
<tr height="308" width="650"><td width="450"></td><td></td></tr> 
<tr height="16" width="650" style="font-size:12px;"><td width="450">&nbsp;</td><td align="left" valign="bottom">'. $first_name . ' ' . $last_name . '</td></tr> 
<tr height="16" width="650" style="font-size:12px;"><td width="450">&nbsp;</td><td align="left" valign="bottom">'. $email . '</td></tr> 
<tr height="16" width="650" style="font-size:12px;"><td width="450">&nbsp;</td><td align="left" valign="bottom">'. $nextdate . '</td></tr> 
<tr height="134" width="650"><td width="450"></td><td></td></tr> 
</table> 
<table background="http://mysite.com/emailfinal2.jpg" border="0" width="650" height="133" style="font-family: arial, tahoma;color: #29468a; margin: 0;"> 
<tr height="10" width="650"><td width="175"></td><td></td></tr> 
<tr height="123" width="650" style="font-size:13px;"><td width="175">&nbsp;</td><td align="left" valign="baseline"><a href="http://www.mysite.com/unsubscribe.php" target="_blank" style="text-decoration: none;color: #29468a;">UNSUBSCRIBE</a> | <a href="http://www.mysite.com/Terms-And-Conditions.aspx" target="_blank" style="text-decoration: none;color: #29468a;">TERMS & CONDITIONS</a></td></tr> 
</table> 
<table background="http://mysite.com/emailfinal3.jpg" border="0" width="650" height="60" style="font-family: arial, tahoma;color: #29468a; margin: 0;"> 
<tr height="20" width="650"><td width="526"></td><td></td></tr> 
<tr height="40" width="650" style="font-size:11px;"><td width="526">&nbsp;</td><td align="left" valign="baseline"><a href="http://www.mysite.com/Contact-Us.aspx" target="_blank" style="text-decoration: none;color: #29468a;">Contact Us</a></td></tr> 
</table>'; 
$message .= "</body></html>"; 

有何意見?我在錯誤的方向嗎?我想讓電子郵件默認顯示圖像。

回答

0

開發電子郵件以實現跨多個電子郵件客戶端的兼容性很困難,因爲它們各自都支持HTML和CSS。開發電子郵件時,您可能需要強烈考慮使用電子郵件預覽工具。您可能會阻止您的圖片(這是許多電子郵件客戶端的默認設置)。基本上我的建議是不依賴於圖像的佈局或可讀性的電子郵件。

這裏是鏈接了一篇文章,幾個電子郵件預覽工具:

http://www.smartinsights.com/email-marketing/email-creative-and-copywriting/email-preview-tools/

+0

我希望我不會依賴圖像,但有些時候這些是唯一的方法。我嘗試過的網站預覽我的電子郵件,事情比我想象的要好:) –

0

通常情況下,電子郵件客戶端阻止訪問出於安全/隱私的原因外部圖像。 確保您已將發件人的電子郵件地址添加到白名單中。

如果是你的情況,你不能做太多的事情,因爲這是客戶端的問題。 一個更好的方法是提供一個超鏈接到你的網站有這樣的文字:

如果您不能查看下面的圖片,請點擊這裏。

+0

超鏈接是簡單的解決方案。無論如何,我正在考慮它。 –

0

首先,您必須在您的應用程序中安裝phpmailer庫,然後在圖像標記src中添加cid:image1,cid:image2,cid:image3。然後像下面這樣調用郵件發送功能,它將在所有瀏覽器中顯示圖像,併發送垃圾郵件問題。

 $mail    = new PHPMailer(); 
     $body    = $body; 
     $body    = eregi_replace("[\]",'',$body); 
     $mail->Host  = "";  // sets GMAIL as the SMTP server 
     $mail->Port  = 25;     // set the SMTP port for the GMAIL server 
     $mail->Username = ""; // GMAIL username 
     $mail->Password = '';   // GMAIL password 
     $mail->SetFrom($fr_email, '); 
     $mail->AddReplyTo(""); 
     $mail->Subject = $sub; 
     $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 

     $mail->MsgHTML($body); 
     $address = $to; 
     $mail->AddAddress($address, ""); 
     $mail->AddAddress('[email protected]', "");  
     $notificationpos1 = strpos(strtolower($sub), 'notification'); 
     $notificationpos2 = strpos(strtolower($sub), 'lead');  
     if($notificationpos1 === false && $notificationpos2 === false){ 
      //Attach an image file 
      $mail->AddEmbeddedImage('images/image1.jpg','image1'); 
      $mail->AddEmbeddedImage('images/image1.jpg','image2');  
      $mail->AddEmbeddedImage('images/image2.jpg','image3');  
      // attach file logo.jpg, and later link to it using identfier logoimg 
     } 
      if(!$mail->Send()) { 
       echo "Mailer Error: " . $mail->ErrorInfo; 
      } else { 
       echo "Message sent!"; 
      } 
1

許多郵件客戶端默認不顯示圖像,這些圖像與您的電子郵件外部鏈接在一起。這是出於安全原因(因此,如果我打開垃圾郵件,它不會自動向垃圾郵件發送者的網站發送http請求來獲取圖像,因爲這可以讓垃圾郵件發送者跟蹤我)。

大多數郵件客戶端確實爲用戶提供了加載郵件的選項,但這並不總是理想的(並且很多用戶不打擾 - 我通常不會)。

解決方案是將圖像嵌入到電子郵件本身,因此它們是消息的一部分。大多數阻止外部圖像的郵件客戶端都會很高興地顯示嵌入的圖像。這是使用特殊構建的多部分消息完成的,但我不建議嘗試自己構建它。

如果你還沒有這樣做(它看起來不像你),那麼我建議使用像phpMailer或Swiftmailer這樣的體面的郵件類而不是原始的PHP mail()函數。您將獲得更多功能,包括將圖像嵌入到郵件中的功能。這應該可以幫助你解決你的問題。 (作爲獎勵,它也可能使您的代碼更清潔,更容易使用)。

相關問題