发送邮件后带有问号的php菱形

Posted

技术标签:

【中文标题】发送邮件后带有问号的php菱形【英文标题】:php diamond with question mark after send mail 【发布时间】:2012-11-13 07:46:10 【问题描述】:

我有一个显示考试(希伯来语)的 php 页面,它显示正确,在底部我有一个考试的发送邮件按钮给自己。

问题在于,在我将邮件发送给自己之后,邮件是希伯来语的,但有些字母我看到“�”。

它的字符集:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

我的标题字符集也是 UTF-8,我也尝试 ISO-8859-1,但它给了我同样的结果。

最奇怪的是,当我将标题字符集更改为 Big5(中文)时,我需要在我的电子邮件乱码中看到,但我看到了相同的消息

【问题讨论】:

需要更多信息!显示实际数据及其显示方式。显示您如何发送消息。在收到时显示完整的原始消息,包括电子邮件标题和所有内容。 【参考方案1】:

这是我的代码:

$content = 
    writeExamDetails() .
    writeStudnetDetails() .
    writeAnswers($numOfQuestions);

    if ($_POST['studentComments']!=null) 
        $content .= "<p align=\"" . $text['align'] . "\"><strong>" . 
                    $text['studentComments'] .
                    ":</strong><br />" .
                    formatStr($_POST['studentComments']) . 
                    "</p>";
    

    $body = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" >
    <html>
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
    <title>" . 
    $text['emailResultsPageTitle'] . 
    "</title>
    <style>
    body 
    font-family: Arial, Helvetica, sans-serif;
    font-size: 0.9em;
    direction: " . $text['dir'] . ";
    text-align: " . $text['align'] . ";
    
    </style>
    </head>
    <body>
    <p dir=\"ltr\" style=\"color:#999999;\">
    If you cannot view the following contents properly, change the Encoding to Unicode (UTF-8).</p>" .
    $content;

    $body .= "<hr noshade=\"noshade\" height=\"1\" /><p>" . 
            $text['emailResultsDurationTitle'] . ": " . 
            duration((int)($_POST['lapsedTime']/1000)) .
            "</p>
            </body>
            </html>";

    $subject = "" . trim(stripslashes(stripslashes($_POST['examTitle'])));
                //formatStr2html($_POST['examTitle']);
    if (isset($_POST['studentId']))
        $subject .= " (ID: " . $_POST['studentId'] . ")";
    

    $headers = "From: " . $from . "\n" . $cc . 
                "Subject: " . $subject ."\n" .
                "X-Mailer: PHP/" . phpversion() . "\n" .
                "MIME-Version: 1.0\n" .
                "X-Priority: 1\n" . "Importance: High\n" . "X-MSMail-Priority: High\n" .
                "Content-Type: text/html; charset=iso-8859-1\n";
                "Content-Transfer-Encoding: 8bit\r\n\r\n";



    $result = mail ($to, $subject, $body, $headers);

这就是它在希伯来语中的样子(我希望你理解希伯来语)

在浏览器中(正确)--->“אחת שתים בדיקה אחת שתים בדיקה”

在电子邮件中(不正确)--->“אחת שת�ם בדיקה אחת שתים בדי�קה”

【讨论】:

以上是关于发送邮件后带有问号的php菱形的主要内容,如果未能解决你的问题,请参考以下文章

PHP发送带有文件附件的电子邮件 - 电子邮件根本不发送

php 注册后发送验证邮件

PHP不发送带有附件的邮件

通过电子邮件发送带有 PHP 和 HTML 错误消息“Cannot POST mail.php”的表单

使用 S/MIME (PHP) 发送带有附件的电子邮件

如何使用带有附件的 PEAR Mail 包使用 PHP 发送电子邮件