我一直试图从表单中获取信息并将其发送到电子邮件。它的工作正常,除非阿拉伯语形式在这种情况下阿拉伯语部分在电子邮件中显示为乱码。这是我最新的试用邮件代码:
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@email.com', 'Name');
$mail->SetFrom('email@gmail.com', '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 webmail检查两者都没有正确看到阿拉伯语部分。任何帮助表示赞赏。
答案 0 :(得分:0)
尝试以下操作,在构造对象之后立即添加charset,然后再指定阿拉伯文本。
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
还尝试对身体进行编码:
$mail->AltBody = "=?UTF-8?B?".base64_encode($arabicBody)."?=";
$mail->AltBody = "=?UTF-8?Q?".imap_8bit($arabicBody)."?=";