2011-12-22 13 views
1

SMTPプロトコルとééíóのような特殊文字を使用して電子メールライブラリを使用して電子メールを送信しようとしています。問題は、電子メールがUTF-8設定を使用していてもこの特殊文字なしで送信することです。Codeigniter電子メールの特殊文字

私はAmazon SESを使用しています。

コードを見てください。

//Libraries 
    $ci->load->library('email'); 
    //Seta gMail 
    $config['protocol'] = "smtp"; 
    $config['smtp_host'] = "ssl://"; 
    $config['smtp_user'] = "user"; 
    $config['smtp_pass'] = "pass"; 
    $config['smtp_port'] = "465"; 
    $config['smtp_timeout'] = 30; 
    $config['charset'] = "utf-8"; 
    $config['wordwrap'] = TRUE; 
    $config['validate'] = TRUE; 
    $config['mailtype'] = "html"; 
    $config['newline'] = "\r\n"; 
    $ci->email->initialize($config); 
    //Carrega o modelo do e-mail 
    $mensagem = $conteudo; 
    //Seta variáveis 
    $ci->email->from("[email protected]", $titulo); 
    $ci->email->reply_to('[email protected]', 'New user'); 
    $ci->email->set_alt_message($conteudo); 
    $ci->email->to($email_destino); 
    $ci->email->subject($titulo); 
    $ci->email->message($mensagem); 
    $ci->email->send(); 
+0

文字セットを 'quoted-printable'に変更します。結果を返信してください。 –

+0

こんにちはマット。電子メールは、quoted-printable文字セットを使用して送信しません。 – Marcos

+0

同じエラーが表示されますか? –

答えて

0

単純にエンコードしても機能します。指定された文字列はプレーンテキストでなければならず、そうでなければ動作しません。

これは動作します:これは、電子メールの体のために

$ci->email->subject(utf8_encode("Special characters : éàî")); 

を動作しません

$ci->email->subject(utf8_encode("Special characters : éàî")); 

、わからないすべての特殊文字が正しく

エンコードされ、これは動作します:

$ci->email->message("<p>Special characters : &eacute;&agrave;&icirc;</p>"); 

これは動作しません

$ci->email->message("<p>Special characters : éàî</p>"); 
0

CodeIgniterの内部電子メールライブラリの問題は、非ラテン文字で本文を送信するのが苦痛であることです。また、ヨーロッパ言語の文字をエスケープすることが許容される場合、非ラテン文字のみで構成されるテキスト全体をエスケープすることは非現実的です。

一部のソリューションが動作しているように見える場合でも、一部の電子メールクライアントとの互換性の問題に直面する可能性があります。

よりよい解決策は、内部CI libよりはるかに優れたPHPMailerライブラリを埋め込むことです。このwrapper for CodeIgniterを使用し、符号化プロパティをquoted-printableに設定して、機能をset_encoding($encoding)に設定することができます。