-2

我已按照此页面上的说明在 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 托管的电子邮件有关。

4

1 回答 1

3

没关系,Gmail 15 分钟后收到了邮件。我猜这两个错误都与 Godaddy 托管的电子邮件有关。

该错误确实不是源自您的mail()代码或服务器设置——您的 MTA 接收来自mail命令的消息并尝试传递该消息。

该错误源自 GoDaddy 的接收邮件服务器(您的 postfix 试图将邮件传递到的服务器)。或沿途的 SMTP 中继服务器之一。

不过,拒绝并不意外:您声明您的服务器正在 AWS 中运行。不幸的是,您不是唯一来自 AWS 实例的邮件。许多臭名昭著的垃圾邮件发送者比您早,破坏了 AWS 的 IP 地址作为值得信赖的邮件来源的可信度。这就是为什么许多 ISP 会阻止来自 AWS 的传入邮件(这就是 554 错误:中继访问被拒绝)。

使您的问题恶化:如果您继续使用这种方法,AWS 将自动阻止来自您的实例的所有外发邮件,以试图解决垃圾邮件问题。但是,在手动验证您的意图后,他们应该恢复您的邮寄权限。

Your best option on AWS to reliably send email would probably be using their own SES service, which should probably get you past most RBL checks in MTA's. But SES does cost money..

于 2012-06-13T22:19:11.943 回答