电子邮件编码特殊字符


Codeigniter e-mail special characters

我正在尝试使用SMTP协议和áéíó等特殊字符发送电子邮件库。问题是,即使使用UTF-8配置,电子邮件发送时也没有这个特殊字符。

我正在使用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("cool@email.com", $titulo);
  $ci->email->reply_to('cool@email.com', 'New user');
  $ci->email->set_alt_message($conteudo);
  $ci->email->to($email_destino);
  $ci->email->subject($titulo);
  $ci->email->message($mensagem);
  $ci->email->send();  

只需对主题进行编码就可以了。提供的字符串必须是纯文本/没有编码,否则它将不起作用。

$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>");

CodeIgniter内部电子邮件库的问题是,发送带有非拉丁字符的正文是一件痛苦的事情。如果可以转义欧洲语言的某些字符,那么转义完全由非拉丁字符组成的整个文本是不现实的。

即使某些解决方案似乎有效,您也可能面临与某些电子邮件客户端兼容的问题。

一个更好的解决方案是嵌入PHPMailer库,它比内部CI库要好得多。您可以为CodeIgniter使用这个包装器,并通过set_encoding($encoding) .
函数将Encoding属性设置为 quotes -printable