Codeigniter电子邮件特殊字符

时间:2011-12-22 01:46:55

标签: php email codeigniter

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

我正在使用亚马逊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();  

2 个答案:

答案 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>");

答案 1 :(得分:0)

CodeIgniter内部电子邮件库的问题在于发送具有非拉丁字符的正文是一件痛苦的事。如果逃避一些欧洲语言的角色是可以接受的,那么逃避一个完全由非拉丁字符组成的文本是不现实的。

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

更好的解决方案是嵌入PHPMailer库,它比内部CI lib好得多。您可以使用此wrapper for CodeIgniter并使用函数set_encoding($encoding)编码属性设置为 quoted-printable