2011-02-07 64 views
1

我發送HTML郵件與swiftmailer代替。這一切都非常好,我的HTML郵件在所有客戶端都顯示得很好。我非常瞭解構建電子郵件模板。發送他們自己沒有那麼多......在Gmail和Hotmail存在嵌入式圖像顯示了連接在模板

的問題。圖像沒有顯示出來。它顯示了雷鳥就好比如... gmail的離開我的形象的空白,並將其添加爲附件(在郵件的底部,就像我送生日照片..)。

任何想法?

我有下面的代碼:

function deliverMail($subject, $data, $from, $to, $template){ 
    if($_SERVER['SERVER_ADDR'] !== '::1'){ 

     if (!is_array($to)){ 
      $to = array($to);  
     }   
     $from = explode(",", $from);   

     //Create the Transport 
     $transport = Swift_SmtpTransport::newInstance('mail.xxx.nl', 25) 
      ->setUsername('xxx') 
      ->setPassword('xxx');   

     $mailer = Swift_Mailer::newInstance($transport); 
     $message = Swift_Message::newInstance($subject); 
     $image = $message->embed(Swift_Image::fromPath($_SERVER['DOCUMENT_ROOT'].'/templates/emails/xxx.jpg')); 


     // open the file 
     $sourcefile  = $_SERVER['DOCUMENT_ROOT'].'/templates/emails/'.$template.'.html.tpl'; 
     $fh    = fopen($sourcefile, 'r'); 
     $htmltemplate  = fread($fh, filesize($sourcefile)); 
     fclose($fh); 

     // set the content 
     if($template == 'confirm'){$replaceOld = array("[*code*]", "[*imgsrc*]");}   
     if($template == 'notify'){$replaceOld = array("[*url*]", "[*imgsrc*]");} 

     $replaceNew  = array($data, $image);   
     $body   = str_replace($replaceOld, $replaceNew, $htmltemplate);   



     $message->setFrom(array($from[0] => $from[1])) 
     ->setTo($to) 
     ->setBody($body, 'text/html'); 


     if (!$mailer->send($message, $failures)){ 
      return "Failures:"; 
      return print_r($failures); 
     }else{ 
      return 'success'; 
     } 

    } 
} 

將在我的模板這裏呈現的圖像:

<td id="head" height="80" width="640" colspan="3" valign="top" align="left"> 
<image src="[*imgsrc*]" width="140" height="80" alt="xxx"/>   
</td> 

回答

1

哇,終於塵埃落定此。 「圖像」當然不是一個有效的HTML標記...嘗試3個不同的php庫後,我發現這..

<td id="head" height="80" width="640" colspan="3" valign="top" align="left"> 
    <image src="[*imgsrc*]" width="140" height="80" alt="xxx"/>   
    </td> 
+0

所以你使用``而不是`<圖片src = 「」 ...>`? – 2014-11-21 13:01:08

1

我已經看到了GMail的這種行爲也覺得這僅僅是GMail如何顯示帶有嵌入式圖像的郵件。

請參閱此鏈接瞭解更多信息:
http://www.getelastic.com/email-design-for-gmail/

你知道Gmail默認禁用HTML電子郵件 圖像,甚至 如果您的客戶已將您添加到他的 或她的安全名單?

+0

解決方案將鏈接到外部服務器。比收件人將不得不允許圖像顯示。以上文章就是我想的。我想附上圖片來規避這種行爲。使用PHPmailer我已經能夠做到這一點。我不確定爲什麼它不適用於SwiftMailer。糾正我,如果我錯了.. – dubbelj 2011-02-08 09:21:14