Я занимаюсь разработкой системы управления отпусками с открытым исходным кодом для НПО. Программное обеспечение должно быть доступно на многих языках; например французский и кхмерский.
Я пытаюсь отправить HTML-письма с CodeIgniter 2.2.0. Я знаю, что это возможно, и что этот вопрос уже задавался здесь. Но я все еще терплю неудачу.
Чего я пытаюсь достичь:
Это работает для английского контента, но не работает, когда электронное письмо содержит нелатинские символы.
Я последовал советам предыдущих ответов:
Давайте рассмотрим пример с моим проектом:
$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";
После долгих поисков я сдался и решил использовать PHPMailer с оберткой для CodeIgniter. Я не знаю, что не так, но единственный способ заставить это работать, это явно установить кодирование собственность на кавычко версия для печати как в этом примере с PHPMailer:
<?php
echo "Start<br />\n";
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'localhost';
$mail->Port = 25;
$mail->setFrom('[email protected]', 'ប្រភេទនៃការសុំច្បាប់');
$mail->addAddress('[email protected]');
$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();
Если вы не установите кодирование свойство, Subject и Sender будут установлены правильно, но не HTML Body …
Проблема библиотеки CI Mail заключается в том, что вы должны экранировать все нелатинские символы Body. Это нереально, если вы работаете с представлением HTML, содержащим неевропейский язык.
Вы могли бы использовать это обертка для CodeIgniter но не забудьте явно установить кодирование собственность на кавычко версия для печати перед обновлением свойства Body.
Других решений пока нет …