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 частта не към altbody, така че: $mail-›MsgHTML(=?UTF-8?B?.imap_8bit('‹html› ‹body›‹h1 style=color :.... но все още не извежда правилно арабски с 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