0

我正在尝试使用此代码使用 PHP 发送电子邮件

$headers = "From: " . "from@myself.com" . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";

mail($to, $subject, $content, $headers);

where$to是一个有效的电子邮件地址,$content是一个 html 模板的内容。

@gmail 和@hotmail 地址都可以正确接收电子邮件。@virgilio.it 地址没有收到它们:可能是什么原因造成的?一些域正在接受并显示来自我的服务器的电子邮件:其他域不接受。为什么是这样?

4

3 回答 3

1

phpmail()函数使用本地 smtp 服务器。通常,如果邮件不被接受,这是因为您的本地 smtp 服务器配置错误。(打开Relay-Access、错误的Reverse-IP-Lookup、动态ip等等……)

使用PHPMailerhttps://github.com/PHPMailer/PHPMailer)类并使用(有效的)smtp 服务器。

于 2013-06-18T13:51:02.837 回答
1

如果未收到消息,请尝试仅使用 LF (\n)。一些 Unix 邮件传输代理(尤其是 » qmail)会自动将 LF 替换为 CRLF(如果使用 CRLF,则会导致 CR 加倍)。这应该是最后的手段,因为它不符合 » RFC 2822。

http://www.faqs.org/rfcs/rfc2822.html

我确实建议为 PHP 使用功能齐全的电子邮件传输类

检查phpmailer calss http://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=7

于 2013-06-18T13:55:38.320 回答
0

由于“发件人”标头电子邮件地址设置为无法解析的主机 (myself.com),某些服务器会阻止邮件。

尝试在“发件人”标题中使用真实的电子邮件地址。

于 2013-06-18T13:48:33.937 回答