伙计,
这些年来,我使用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);
答案 0 :(得分:1)
我认为,您的电子邮件客户端正在考虑smtp服务器“不安全”,因此只会将所有html显示为纯文本,而不是将其呈现。 (为避免触发隐藏脚本,隐藏脚本可以通过加载某些链接的资源(如CSS或图像)来调用)
PHP mail()
函数使用在php.ini
中配置的smtp服务器。在大多数情况下,根本没有配置任何内容,因此服务器本身就充当“ smtp服务器”,可以保证将其检测为垃圾邮件,因为最基本的垃圾邮件检查中约有99%会失败。
我建议切换到某些可用的PHP-Mail-Client(例如https://github.com/PHPMailer/PHPMailer),并配置要通过已知可靠的服务器发送(使用SMTP-Auth)的每封电子邮件和配置良好的SMTP服务器,而不是“ localhost”。