2015-04-11 2 views
0

я пытаюсь отправить по электронной почте с японским характером с PHPMailer, Это моя функция:PHPMailer японский персонаж

function sendMail() 
{ 
    mb_language('ja'); 
    mb_internal_encoding('UTF-8'); 

    $mail = new PHPMailer(); 

    $mail->isSMTP(); 
    $mail->SMTPAuth  = true; 
    $mail->Host   = EMAIL_HOST; 
    $mail->Port   = EMAIL_PORT; 
    $mail->Username  = EMAIL_USERNAME; 
    $mail->Password  = EMAIL_PASSWORD; 
    $mail->SMTPKeepAlive = true; 
    $mail->Mailer  = 'smtp'; 
    $mail->CharSet  = 'ISO-2022-JP'; 
    $mail->Encoding  = "7bit"; 
    $mail->SMTPDebug  = 0; 
    $mail->From   = EMAIL_SET_FROM_EMAIL; 
    $mail->FromName  = mb_encode_mimeheader(EMAIL_SET_FROM_NAME, "ISO-2022-JP-MS"); 
    $mail->addAddress($this->to); 

    if (!empty($this->replyTo)) { 
    $mail->addReplyTo($this->replyTo); 
    } 

    $mail->isHTML(true); 
    $mail->Subject = mb_encode_mimeheader($this->subject, "ISO-2022-JP-MS"); 
    $mail->Body = mb_convert_encoding($this->body, "ISO-2022-JP-MS", "UTF-8"); 

    $isSend = $mail->send(); 

    if (!$isSend) { 
    throw new exception(__METHOD__ . '() ' . $mail->ErrorInfo); 
    } 
} 

В реципиенту тело электронной почты, которые имеют японский характер иногда сломанный, как это:

Случай 1: エ% J%»: A

Случай 2.: Мои друзья Японский ноутбук показывает несколько черный алмаз символ с вопросительным знаком в нем Его на Gmail,

Случай 3: вопросительный знак появляется в японском стиле.

Может ли любое тело показать мне правильную настройку для почтовой программы PHP, чтобы она могла отправлять почту японского персонажа без неизвестного символа, указанного в получателе?

ответ

0

Черный бриллиант с вопросительным знаком в браузере просмотра означает, что у него нет glyph для этого персонажа. Символ может быть действительным, но он не может быть отображен.

Другими словами, это может быть ограничение с помощью системы, выполняющей дисплей, а не вашу программу.

Вы должны проверить свою программу. Откройте электронное письмо в шестнадцатеричном редакторе и убедитесь, что код соответствует ожидаемому, и соответствует указанной вами кодировке.

+0

Попробуйте следующее: http://stackoverflow.com/questions/5498197/need-a-good-hex-editor-for-linux В одном из ответов даже описано, как это сделать в VIM. –

+0

Большое спасибо –

0

Вы сами кодируете материал, а затем PHPMailer будет делать это снова. Когда вы устанавливаете тему и тело, просто используйте исходный текст в правильной кодировке, не кодируйте ее самостоятельно. Вы также устанавливаете 7-битную кодировку с кодировкой, которая не будет вписываться в 7 бит. Если ваш текст уже находится в UTF-8, почему бы не придерживаться этого? Обработка UTF-8 обычно более надежна, чем 8-битные кодировки.

Смежные вопросы