2011-06-25 16 views
2

Codeigniterのemail classでHTML電子メールを送信しようとしています。これは私がそれをやっている方法です:HTML電子メールの一部が電子メールクライアントのテキストとして表示されるのはなぜですか?

$config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.googlemail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '[email protected]', 
     'smtp_pass' => 'password', 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 

    $this->load->library('email', $config); 
    $this->email->from('[email protected]', 'Me'); 
    $this->email->to($email); 
    $this->email->subject($subject); 
    $this->email->message($html); 
    $this->email->set_newline("\r\n"); 

    if($this->email->send()){ 
     return true; 
    }else{  
     return false; 
    } 

しかし、私はGmailやOutlookで電子メールを表示したとき、私はHTMLの束が表示されている電子メールの上部と、電子メールの残りの部分ではテキストとして表示される参照します通常は。

Hereは私が送信しているHTMLです。テストするために見つけたテンプレートです。行1〜19は通常のテキストとして表示され、レンダリングされません。

This isメールの見方。

これはなぜですか?

+0

私はちょうど何かを考えました。私はそれらを介して送信しているように、それはGMailの問題になることができますか?もしそうなら、私はこれをどのように克服するのですか? – Abs

+0

@Alex - どういう意味ですか?私は 'mailtype'を' html'に設定しました。 – Abs

+0

ヘッダーの世話をしていたはずはありません... – xandercoded

答えて

2

質問のコメントの会話の要約として、この問題は変数$htmlの内容のようです。変数にエンティティエンコードされたHTMLが含まれていますhtml_entity_decodeを実行すると問題が解決しました。

+0

Francoisさんは私と付き合ってくれてありがとう! – Abs

1

HTMLコードが表示されないと、テンプレートのヘッダーのようです。 Gmailにはウェブアプリケーションであるため、Gmailにはbodyというタグ内のコードしか表示されない可能性があります。そのため、既にヘッダーと本文(<html><head><body>)が含まれているウェブページに表示されます。

+0

私はOutlookでこの同じメールを見ましたが、同じ問題があります。しかし、それは誤った方法でそれを送信するGMailかもしれません。 – Abs

関連する問題