【发布时间】:2018-09-09 16:01:43
【问题描述】:
伙计们,
多年来,我使用 PHP 发送了许多电子邮件,但从未遇到过 HTML 问题。 前几天我启动了一个新的 Apache/PHP 服务器,并且电子邮件发送正常。
所有电子邮件都以纯文本形式发送。似乎编码不起作用。
即使是:
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
正在设置中...发送的电子邮件不是 HTML,而是纯文本。
我可以使用相同的 PHP 脚本并在另一台服务器上运行它,然后我会收到一封 HTML 电子邮件。
所以我知道我的 PHP 脚本是正确的。 PHP/Apache 中的哪些服务器设置会导致所有电子邮件都以纯文本形式发送?
以下是收件人在文本电子邮件的消息区域中收到的内容:
Content-type: text/html; charset=iso-8859-1
From: no-reply@yahoo.com
Message-Id: <20180909154528.C4128612EC@ww1.localdomain>
Date: Sun, 9 Sep 2018 11:45:28 -0400 (EDT)
<html><body><h1>Hello, World!</h1></body></html>
我的脚本代码:
$to = 'test99@domain.com';
$subject = 'php test';
$from='no-reply@yahoo.com';
$headers ='';
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$from.' '. "\r\n";
$message = '<html><body>';
$message .= '<h1>Hello, World!</h1>';
$message .= '</body></html>';
mail($to, $subject, $message, $headers);
【问题讨论】:
-
您使用的是哪个 SMTP 服务器?是否设置为仅发送纯文本电子邮件?能不能也秀一下代码?
-
你能把你的邮件脚本分享给mail()函数吗?
-
嗨,您的 content-type 之前似乎有一个换行符;标题之间的任何空行都会告诉电子邮件客户端换行符后面的文本是电子邮件内容,而不是标题。话虽这么说,如果您的脚本在一台服务器上运行良好,而不是在新服务器上运行良好,那么这可能是换行符的配置问题(在这两种情况下都是 linux 服务器,还是一个是 windows 服务器?)。顺便说一句,您的 From 标题之前不应该有一个空行。
-
SMTP = 在本地发送邮件
-
两个 Linux 服务器... Centos