我发送的电子邮件如下:
$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=
我该如何解决这个问题?
答案 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">
请注意,第二行前面没有前导空格/标签。