2011-12-22 112 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」。結果回覆。 – 2011-12-22 04:55:38

+0

你好馬特。電子郵件不會使用quoted-printable字符集發送。 – Marcos 2011-12-22 12:03:40

+0

你會得到同樣的錯誤嗎? – 2011-12-22 21:58:34

回答

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並將編碼屬性設置爲帶引號的打印與功能set_encoding($encoding)

相關問題