2011-02-07 12 views
1

私はswiftmailerでHTMLメールを送信しています。それはすべてうまくいく、私のHTMLメールはすべてのクライアントでうまく表示されています。私は電子メールのテンプレートを構築するためのかなりの知識があります。彼ら自身をあまり送信していません...テンプレートの代わりにHTMLメールの埋め込み画像が添付されています

GmailとHotmailに問題があります。画像が表示されません。例えば、Thunderbirdの場合、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

うわー、これを最終的に解決しました。 "image"は有効な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

''の代わりに ''を使用しましたか? –

+0

はい、そうでした – dubbelj

1

は私もGmailでこの動作を見てきましたが、これはちょうどだと思いますGMailが画像を埋め込んだメールを表示する方法

詳細については、このリンクを参照してください:
http://www.getelastic.com/email-design-for-gmail/

は、あなたの顧客が または彼女のセーフリストにあなたを追加したとしても 場合、GmailはデフォルトでHTMLメールで 画像を無効にしていることをご存知でしたか?

+0

解決方法は、外部サーバにリンクすることです。受信者は画像を表示する必要があります。それは上の記事が私の考えであることです。私はその行動を回避するために画像を添付したいと思います。 PHPmailerを使用して私はこれを行うことができました。なぜSwiftMailerで動作しないのか分かりません。もし私が間違っていると私を訂正してください。 – dubbelj