就在最近,偶然地,我发现我无法向服务器以外的国外来源发送电子邮件(我已经在同一服务器上安装了本地电子邮件地址进行测试)。这是我的代码,我无法发送给(例如)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
答案 0 :(得分:3)
错误消息非常明确This mail server requires authentication
您可以在Plesk中创建邮件用户,并使用以下PHP类发送带身份验证的邮件:
此外,您可以尝试一些云邮件服务,例如http://phpmailer.worxware.com/index.php?pg=tutorial#2,他们有很好的PHP API库。
答案 1 :(得分:0)
看起来像邮件服务器的问题。您的代码是在共享主机上?您提供的可能具有反垃圾邮件配置(希望如此)。您必须确保您的发件人地址已存在。对于测试,如果您将消息发送给自己(如果您还没有),它也会有所帮助,这有更多机会工作,然后您可以检查邮件标题。
在平均配置的电子邮件服务器上,有四种邮件通信方式:(我假设您的服务器正在运行somedomain.com并提供@ somedomain.com邮件)