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

如何修复用PHP发送的恼人的引用可打印电子邮件?,php,sendmail,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="#FF

我发送的电子邮件如下:

$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!";
    }
如何修复此问题?

=09是选项卡符号

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

$html_msg = '<html><head>
             <meta http-equiv="content-type" content="text/html; charset=utf-8">
$html\u msg=>
尝试重写为:

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

请注意,第二行前面没有前导空格/制表符。

为什么您关心HTML邮件的源代码中有什么内容?它将在查看时正确渲染。无论如何,您可能必须在您的
sendmail
配置中修复此问题。如果您需要帮助,请尝试在Serverfault.com或SuperUser.com上询问。我担心如果它将“3D”添加到每个标记中,图像将无法正确显示…
=3D
=/code>字符的引用可打印表示形式。非常感谢!这很有道理。知道为什么要在每个
之前添加3D吗?我会尽快接受你的答案!它不能使用常规
=
,因为这是引用的可打印文件中十六进制代码的前缀。
$html_msg = '<html><head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">