2011-12-22 107 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)

相关问题