4

这是我的代码:

<?php
mail('myemail@gmail.com','Test','Test');
?>

发送到非公司地址时,我收到以下错误:

Warning: mail(): SMTP server response: 550 5.7.1 Unable to relay in C:\inetpub\wwwroot\internal_tools\include\mail.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 中设置站点:

有任何想法吗?

4

2 回答 2

5

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

以下是您的选择:

  • 代替该mail()函数,使用支持 SMTP 身份验证的现有 PHP 邮件程序库之一(PEAR Mail、phpmailer、Swift Mailer)。
  • 安装和配置msmtp或替代方案之一(这是使 msmtp 与 PHP 一起工作的方法)。如果您进行了相应的设置,PHP 将在必须发送消息时执行该程序,该程序确实支持 SMTP 身份验证sendmail_path
  • 更改邮件服务器的配置以允许从 Web 服务器的 IP 地址中继邮件。
于 2013-06-14T02:44:51.583 回答
0

您需要检查您的 SMTP 提供商的政策。或者您需要检查您的 Smtp 服务器配置(如果此服务器直接发送电子邮件)

于 2013-06-13T19:07:51.623 回答