我有一些类似这样的脚本可以发送电子邮件:
$content = "<html><head><title>xxxxx</title></head><body>blabla</body></html>";
$headers ='From: "'.$email_auteur.'"<'.$email_auteur.'>'."\n";
$headers .='Reply-To: '.$email_auteur.''."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
mail("[email protected]", "Subject", $content, $headers);
所有类似这样的脚本都运行良好。但我更换了服务器(相同的操作系统(Debian)),现在这些脚本不再起作用。我注意到,如果我删除此行末尾的 \n:
$headers .='Reply-To: '.$email_auteur.''."\n";
可以!...但是我在服务器上运行了大量此脚本,因此纠正它们太麻烦了。请问我在哪里可以找到一些可以接受此字符的配置?
答案1
正如在 php 文档中看到的https://www.php.net/manual/en/function.mail.php,您应该使用 \r\n 而不是 \n 来分隔标题(除非使用对其进行双重编码的错误邮件传输代理)。
根据https://issues.apache.org/SpamAssassin/show_bug.cgi?id=6864您被标记为垃圾邮件,因为标题中"
和之间没有空格。<
From
您应该在发件人标题中添加一个空格,这足以摆脱垃圾邮件分数。
从:
$headers ='发件人:“'.$email_auteur.'”<'.$email_auteur.'>'。”\n";
到:
$headers ='发件人:“'.$email_auteur.'”<'.$email_auteur.'>'。"\n";
实际上,您不应该使用电子邮件地址作为显示名称,因此如果您没有任何相关内容可用作显示名称,则只需使用:
$headers ='发件人:'.$email_auteur."\n";