我正在为非政府组织开发一个开源假期管理系统。该软件必须以多种语言提供;例如法国人和高棉人。
我在尝试使用 CodeIgniter 2.2.0 发送HTML电子邮件时遇到了困难。我知道这是可能的,这个问题已在这里提出。但我仍然失败。
我想要实现的目标:
这适用于英语内容,但当电子邮件包含非拉丁字符时,它不起作用。
我遵循了之前答案的建议:
让我们以我的项目为例:
$config['protocol'] = 'smtp';
$config['useragent'] = 'CodeIgniter';
$config['smtp_host'] = 'localhost';
$config['smtp_user'] = '';
$config['smtp_pass'] = '';
$config['_smtp_auth'] = TRUE;
$config['smtp_port'] = '25';
$config['smtp_timeout'] = '20';
$config['charset'] = 'utf-8'; //'iso-8859-1'
$config['mailtype'] = 'html';
$config['wordwrap'] = FALSE;
//$config['wrapchars'] = 80;
$config['validate'] = FALSE;
$config['priority'] = 3;
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
答案 0 :(得分:2)
经过大量搜索后,我放弃了,决定使用PHPMailer和CodeIgniter的包装器。我不知道出了什么问题,但让它工作的唯一方法是使用PHPMailer将编码属性显式设置为 quoted-printable ,如此示例: / p>
<?php
echo "Start<br />\n";
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'localhost';
$mail->Port = 25;
$mail->setFrom('test@gmail.com', 'ប្រភេទនៃការសុំច្បាប់');
$mail->addAddress('target@example.com');
$mail->WordWrap = 70;
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'quoted-printable';
$mail->XMailer = 'Test';
$mail->IsHTML(true);
$message = '<html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"><meta charset="UTF-8"></head><body>test: <ul><li>ប្រភេទឈប់សម្រាកបានធ្វើអោយទាន់សម័យដោយជោគជ័យ</li></ul></body></html>';
$mail->Subject = 'Khmer - ប្រភេទនៃការសុំច្បាប់';
$mail->Body = $message;
$mail->send();
如果您未设置编码属性,则会正确设置主题和发件人,但不会设置HTML正文...
CI邮件库的问题是您必须转义Body的所有非拉丁字符。如果使用包含非欧洲语言的HTML视图,这是不现实的。
您可以使用此wrapper for CodeIgniter,但在更新Body属性之前,请不要忘记将编码属性明确设置为 quoted-printable 。