最近,偶然地,我发现无法将电子邮件发送到服务器以外的其他来源(我已经在同一服务器上安装了本地电子邮件地址的情况下进行了测试)。这是我的代码,因此无法发送到(例如)gmail或yahoo。
$receiver = $emailadr;
$subj = 'Auth';
$msg = 'Thank you!';
$header = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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
错误消息很清楚This mail server requires authentication
您可以在Plesk中创建邮件用户,并使用以下PHP类通过身份验证发送邮件:
http://phpmailer.worxware.com/index.php?pg=tutorial#2
此外,您也可以尝试一些http://sendgrid.com/之类的云邮件服务,它们具有不错的PHP API库。
好像是邮件服务器的问题。您的代码在共享主机上?您的提供商可能具有反垃圾邮件配置(希望如此)。您必须确保您的发件人地址已存在。对于测试,如果将消息发送给自己(如果尚未发送),这也很有帮助,这样可以增加工作的机会,然后可以检查邮件标题。
在平均配置的电子邮件服务器上,有四种邮件通信方式:(我假设您的服务器正在运行somedomain.com并提供@ somedomain.com邮件)