下面是我的代码:
<?php
mail('myemail@gmail.com','Test','Test');
?>
当发送到非公司地址时,我得到以下错误:
Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay in C:inetpubwwwrootinternal_toolsincludemail.php on line 2
当把电子邮件地址切换到我的工作邮箱时,它工作得很好。我的PHP.ini看起来也不错:
[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
SMTP = PCMAIL1.mycompany.com
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = no-reply@mycompany.com
甚至在IIS7中设置站点:
任何想法?
为了防止滥用发送垃圾邮件,许多电子邮件服务器要求客户端在转发邮件(将其转发到收件人的电子邮件服务器)之前被认证为合法用户。您已在IIS中指定凭据;但是,PHP不使用它们。
选项如下:
- 代替
mail()
函数,使用现有的PHP邮件库之一,支持SMTP身份验证(PEAR Mail, phpmailer, Swift mailer, 等)。 - 安装和配置msmtp或其中一个替代方案(这里是如何使msmtp与PHP一起工作)。如果您设置了相应的
sendmail_path
, PHP将在需要发送消息时执行该程序,该程序支持SMTP身份验证。 - 更改邮件服务器的配置,允许从web服务器的IP地址中继邮件。
您需要检查Smtp提供商的策略。或者您需要检查您的Smtp服务器配置(如果此服务器直接发送电子邮件)