我正在尝试使用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();
发布于 2012-05-12 00:09:48
只需对主题进行编码,它就能正常工作。提供的字符串必须是纯文本/无编码,否则将无法工作。
这将会起作用:
$ci->email->subject(utf8_encode("Special characters : éàî"));
这不管用
$ci->email->subject(utf8_encode("Special characters : éàî"));
对于电子邮件正文,不确定所有特殊字符都已正确编码
这将会起作用:
$ci->email->message("<p>Special characters : éàî</p>");
这不管用
$ci->email->message("<p>Special characters : éàî</p>");
发布于 2014-09-29 16:45:25
CodeIgniter内部电子邮件库的问题在于,发送包含非拉丁字符的正文非常麻烦。如果转义欧洲语言的某些字符是可以接受的,那么转义完全由非拉丁字符组成的整个文本是不现实的。
即使某些解决方案似乎有效,您也可能会面临与某些电子邮件客户端的兼容性问题。
更好的解决方案是嵌入PHPMailer库,这比内部CI库要好得多。您可以使用此,并使用函数set_encoding($encoding)
将编码属性设置为quoted-printable。
https://stackoverflow.com/questions/8598583
复制相似问题