php почта на арабском языке в теле письма

Я пытался получить информацию из формы и отправить ее по электронной почте. он отлично работает, если в форме нет арабского языка, и в этом случае арабские части отображаются в электронной почте как тарабарщина. вот мой последний пробный почтовый код:

require_once('PHPMailer/class.phpmailer.php');
require ('diet/contact.html');



$name = htmlentities($_POST['cf-name']);
$email = htmlentities($_POST['cf-email']);
$tel = htmlentities($_POST['cf-tel']);
$complaint = htmlentities($_POST['cf-complaint']);
$hour = htmlentities($_POST['cf-hour']);
$min = htmlentities($_POST['cf-min']);

if ($_POST['cf-am'] == 'am') {
    $tod = 'am';
} elseif ($_POST['cf-pm'] == 'pm') {
    $tod = 'pm';
}

$day = htmlentities($_POST['cf-day']);

if (isset($_POST['cf-info']) === true && empty($_POST['cf-info']) === false ) {
    $info = htmlentities($_POST['cf-info']);
}

$mail = new PHPMailer(true);
try {
    $mail->AddReplyTo($email, $name);
    $mail->AddAddress('[email protected]', 'Name');
    $mail->SetFrom('[email protected]', 'Name 2'); //
    $mail->Subject = 'موضوع';
    $mail->AltBody = 'برنامه شما از این ایمیل پشتیبانی نمی کند، برای دیدن آن، لطفا از برنامه دیگری استفاده نمائید'; // متنی برای کاربرانی که نمی توانند ایمیل را به درستی مشاهده کنند
    $mail->CharSet = 'UTF-8';
    $mail->ContentType = 'text/html';
    $mail->MsgHTML('<html>
<body><h1 style="color: #8b4513">New Contact</h1>
    <h3 style="color: #006400">Hello,</h3>
    You have just received a contact request with the following information:<br/><br/>
    <b>Name:</b> '.$name.'<br/>
    <b>Email</b>: '.$email.'<br/>
    <b>Telephone number:</b> '.$tel.'<br/>
    <b>Complaint:</b> '.$complaint.'<br/>
    <b>His preferred time to visit:</b> '.$hour.':'.$min.' '.$tod.'<br/>
    <b>His preferred day is:</b> '.$day.'<br/><br/>
    <b>Additional info:</b> '.$info.'<br/><br/>
    **You can reply directly to this email to email the contact.**<br/><br/>
    - Have a nice day</body></html>

');


    $mail->Send();
    echo "پیام با موفقیت ارسال شد\n";
}
catch (phpmailerException $e) {
    echo $e->errorMessage();
}
catch (Exception $e) {
    echo $e->getMessage();
}

электронная почта работает нормально, за исключением любого арабского ввода из формы. Я много искал решение, но ничего не выводит арабский шрифт. Я использую почтовый клиент Mac OSX и веб-почту icloud, чтобы проверить, что оба неправильно видят арабские части. любая помощь приветствуется.


person Tikaa    schedule 29.03.2014    source источник
comment
возможный дубликат специальных символов php mail utf8   -  person sunshinekitty    schedule 29.03.2014


Ответы (1)


Попробуйте следующее: добавьте кодировку сразу после создания объекта перед указанием арабского текста.

$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';

Также пытаюсь закодировать тело в любом случае:

$mail->AltBody = "=?UTF-8?B?".base64_encode($arabicBody)."?=";
$mail->AltBody = "=?UTF-8?Q?".imap_8bit($arabicBody)."?=";
person Aziz Saleh    schedule 29.03.2014
comment
спасибо за ваш ответ. я попробовал то, что вы упомянули, но для части html, а не для альтернативного тела, поэтому: $mail-> MsgHTML (=? UTF-8? B?. :.... но все еще неправильно выводит арабский язык как с base64, так и с imap - person Tikaa; 29.03.2014
comment
Текст, с которым у вас возникла проблема, находится в AltBody или в сообщении? - person Aziz Saleh; 29.03.2014
comment
сообщение в $mail-›MsgHTML('‹html›‹body› $name $complaint ..‹/body›/‹html›'); эти переменные взяты из формы и, скорее всего, будут введены пользователем на арабском языке - person Tikaa; 29.03.2014