mail():SMTP服务器响应:503此邮件服务器在尝试发送到非本地电子邮件地址时需要身份验证

时间:2015-11-14 00:46:44

标签: php email plesk

就在最近,偶然地,我发现我无法向服务器以外的国外来源发送电子邮件(我已经在同一服务器上安装了本地电子邮件地址进行测试)。这是我的代码,我无法发送给(例如)gmail或yahoo。

$receiver = $emailadr;
$subj     = 'Auth';
$msg      = 'Thank you!';
$header = 'From: sometestmail@somedomain.com' . "\r\n" . 
'Reply-To: sometestmail@somedomain.com' . "\r\n" . 
'X-Mailer: PHP/' . phpversion() . "\r\n" . 'Content-type: text/html; charset=iso-8859-1';
mail($receiver, $subj, $msg, $header);

当(尝试)发送时,它会出现这个:

  

:mail():SMTP服务器响应:503此邮件服务器在尝试发送到非本地电子邮件地址时需要进行身份验证。请检查您的邮件客户端设置或联系您的管理员以验证是否为此服务器定义了域或地址。

我正在使用Plesk 12.5

2 个答案:

答案 0 :(得分:3)

错误消息非常明确This mail server requires authentication

您可以在Plesk中创建邮件用户,并使用以下PHP类发送带身份验证的邮件:

document.createElement

此外,您可以尝试一些云邮件服务,例如http://phpmailer.worxware.com/index.php?pg=tutorial#2,他们有很好的PHP API库。

答案 1 :(得分:0)

看起来像邮件服务器的问题。您的代码是在共享主机上?您提供的可能具有反垃圾邮件配置(希望如此)。您必须确保您的发件人地址已存在。对于测试,如果您将消息发送给自己(如果您还没有),它也会有所帮助,这有更多机会工作,然后您可以检查邮件标题。

在平均配置的电子邮件服务器上,有四种邮件通信方式:(我假设您的服务器正在运行somedomain.com并提供@ somedomain.com邮件)

  • 传入:从not-@somedomain.com到@ somedomain.com的邮件。通常只接受这些邮件。
  • 传出:从@ somedomain.com发送邮件到not-@somedomain.com。如果源IP地址在本地网络(或网络服务器)中,则接受邮件。 那就是你想要的
  • 内部:邮件从@ somedomain.com到@ somedomain.com。如果您将信息发送给自己,这是您的另一个选择。在这里,您收到邮件收到的最高更改
  • 接力:邮件从not-@somedomain.com到not-@somedomain.com。这是您的服务器认为您正在做的事情。转发邮件通常会被拒绝,但经过身份验证的用户,因为它通常是垃圾邮件(以及它在错误邮件中告诉您的内容)。不幸的是,标准的PHP sendmail功能并不支持身份验证。因此,您需要将发件人地址添加到邮件服务器的白名单或(更容易:)将其更改为可接受的内部地址,该地址会根据收件人地址将您的邮件更改为传出邮件或内部邮件。