SMTP 服务器响应:550 5.7.1 无法中继 - 向非公司地址发送电子邮件

etm*_*124 4 php smtp

这是我的代码:

<?php
mail('myemail@gmail.com','Test','Test');
?>
Run Code Online (Sandbox Code Playgroud)

发送到非公司地址时,出现以下错误:

Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay in C:\inetpub\wwwroot\internal_tools\include\mail.php on line 2
Run Code Online (Sandbox Code Playgroud)

将电子邮件地址切换到我的工作电子邮件时,效果很好。我的 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
Run Code Online (Sandbox Code Playgroud)

甚至在 IIS7 中设置了站点:

有任何想法吗?

Ple*_*and 5

为了防止滥用发送垃圾邮件,许多电子邮件服务器要求在中继邮件(将其转发到收件人的电子邮件服务器)之前将客户端验证为合法用户。您已在 IIS 中指定凭据;但是,PHP 不使用它们。

以下是您的选择:

  • mail()使用支持 SMTP 身份验证的现有 PHP 邮件程序库之一(PEAR Mail、phpmailer、Swift Mailer)代替该函数。
  • 安装和配置msmtp或其中一种替代方法(这是使 msmtp 与 PHP 一起工作的方法)。PHP 将执行该程序,该程序支持 SMTP 身份验证,只要您进行了相应设置,它就必须发送消息sendmail_path
  • 更改邮件服务器的配置以允许从 Web 服务器的 IP 地址中继邮件。