3

我正在使用 PHPMailer 并尝试发送带有阿拉伯文本的电子邮件,它发送的是空主题,我可以在收件箱中看到“(无主题)”

我正在使用以下内容:

HTML 代码

<form action="mail.php" method="post">
<input type="text" name="subject" />
<input type="submit" value="Send" />
</form>

PHP 代码 (mail.php)

$subject = $_POST["subject"];
    $mailer = new PHPMailer();
            $mailer->CharSet = 'UTF-8';
            $mailer->IsSMTP();
            $mailer->SMTPDebug = 1;
            $mailer->SMTPAuth = true;



            // Prepare Message  
            $mailer->Subject = ($subject);
            $emails = 0;

帮助将不胜感激:)

4

5 回答 5

9

只需添加

$mailer->CharSet = 'UTF-8';

及其作品

于 2015-10-03T15:37:59.630 回答
4

用这个。它对我有用。

    $mail = new PHPMailer();
    $mail->CharSet = 'UTF-8';       
    $mail->IsSMTP();                                   // send via SMTP
    $mail->Encoding     = "base64";
    $mail->Host     = ........

    ...

    $mail->Subject  =  '=?UTF-8?B?'.base64_encode($subject).'?=';

如果您将htmlentities ($subject)其更改为htmlspecialchars ($subject)htmlenitities 会中断编码。

于 2014-07-08T01:45:34.180 回答
1
$subject = $_POST["subject"];
$subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; 
于 2013-03-23T23:07:54.567 回答
1

请尝试以下步骤以正确解决问题。

  1. 确保发布主题的页面是 UTF-8 编码页面。

    1a。如果源不是 UTF-8,那么

    iconv("SOURCE_ENCODING","UTF-8",$subject);
    
  2. Var 在发送邮件之前转储主题。

  3. 尝试用阿拉伯语添加一个硬编码的主题,例如:

    $subject= "تجربة عنوان للرسالة";
    
于 2013-03-23T22:30:58.023 回答
0

尝试旧方法:

$to      = 'any@mail.com';
$subject = 'Hi!';
$message = 'Whats up?';
$headers = 'From: mail@of.you.com' . "\r\n" .
        'Reply-To: noreply@blabla.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion()."\r\n";                         
$headers .= 'MIME-Version: 1.0' . "\r\n";
//if you send an html page:
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

mail($to, $subject, $message, $headers);
于 2013-03-23T22:25:34.130 回答