我已按照on this page的说明在AWS linux ubuntu上设置mail()
,但邮件功能无效。我知道我已经正确地编写了发送邮件脚本,所以我需要一些其他东西来使其工作吗?是否有特殊的网络邮件软件或我需要的东西?
修改
display_errors
已开启。 PHP代码如下。
显示成功消息,但从未收到电子邮件。
$to = "myemail@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body))
{
echo("Message successfully sent!");
}
else
{
echo("Message delivery failed...");
}
编辑2:
我尝试将其发送到由godaddy和gmail帐户托管的电子邮件中。两者都在错误日志中返回了以下相同的响应。
错误日志:
“8C029:主机smtp.secureserver.net [ 。 。 。 ]拒绝与之交谈 我: - - *。 。 。 。 554您对此邮件系统的访问权限 由于发送MTA的声誉不佳而遭到拒绝。如果你相信 如果此故障有误,请联系目标收件人 通过替代方式。“
没关系,Gmail在15分钟后收到了该消息。我猜这两个错误都与godaddy托管的电子邮件有关。
答案 0 :(得分:3)
没关系,Gmail在15分钟后收到了该消息。我猜这两个错误都与godaddy托管的电子邮件有关。
错误确实不是源于您的mail()
代码或服务器设置 - 您的MTA从mail
命令接收消息并尝试传递消息。
错误源自GoDaddy的接收邮件服务器(您的后缀正在尝试传递邮件的邮件服务器)。或者沿着该路由的一个SMTP中继服务器。
拒绝并不意外:您声明您的服务器正在AWS中运行。不幸的是,您不是唯一一个来自AWS实例的邮件。很多臭名昭着的垃圾邮件发送者都在你之前,破坏了AWS的IP地址作为值得信赖的邮件来源的可信度。这就是为什么许多ISP阻止来自AWS的传入邮件(这就是554错误:拒绝中继访问)。
使您的问题恶化:如果您继续使用此方法,AWS将自动阻止来自您实例的所有外发邮件,以试图解决垃圾邮件问题。手动验证您的意图后,他们应恢复您的邮寄权限。
您在AWS上可靠地发送电子邮件的最佳选择可能是使用他们自己的SES service,这可能会让您通过MTA中的大多数RBL次检查。但SES确实要花钱..