如何修复用PHP发送的恼人的引用可打印电子邮件?

时间:2016-01-07 20:09:35

标签: php sendmail

我发送的电子邮件如下:

$message = "Hello<br/>Something else here.<br/>Bye!";
$html_msg = '<html><head>
             <meta http-equiv="content-type" content="text/html; charset=utf-8">
             </head><body bgcolor="#FFFFFF" text="#000000">
             '.$message.'
             </body>
             </html>';

$header = "Date: " . $mail_date . "\n".
          "Return-Path: " . $from_email . "\n".
          "To: " . $to . "\n".
          "From: Me <me@me.com>\n".
          "Subject: " . $subject . "\n".
          "MIME-Version: 1.0\n".
          "Content-Transfer-Encoding: 7bit\n".
          sprintf("Content-Type: %s; charset=\"%s\"","text/html","utf-8")."\n\n";

$output = sprintf("%s -oi -t", "/usr/sbin/sendmail");

    if(!@$mail = popen($output, "w")) {
                echo "Error!";
    }

    fputs($mail, $header);
    fputs($mail, $html_msg);

    $result = pclose($mail) >> 8 & 0xFF;

    if($result != 0) {
                echo "Error!";
    }

现在,它正确执行但是当我检查收到的电子邮件的HTML代码时,它内容充满quoted-printable内容,如:

<html><head>
=09=09=09=09=09=09=09 <meta http-equiv=3D"content-type" content=3D"text/htm=

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

= 09是标签符号。

在您的代码中,您必须使用标签在结束标头前面创建一个间距,这些标签显示为= 09

$html_msg = '<html><head>
             <meta http-equiv="content-type" content="text/html; charset=utf-8">

尝试重写为:

$html_msg = '<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

请注意,第二行前面没有前导空格/标签。