2

我正在使用 wamp 服务器并尝试使用 PHP 函数发送电子邮件mail('me@ISPdomain.com','my subject','my body');
其中包含以下设置php.ini

SMTP = 'ISP's SMTP server'  
smtp_port = 25 

但我得到消息:

Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Relaying not allowed. Please use SMTP Authentication.

如何解决?

4

3 回答 3

5

您的 ISP 的邮件服务器不允许“中继”,这是一件好事,否则他们最终会移动大量垃圾邮件。

http://en.wikipedia.org/wiki/Open_mail_relay

开放式邮件中继是一种 SMTP 服务器,其配置方式允许 Internet 上的任何人通过它发送电子邮件,而不仅仅是发往或来自已知用户的邮件。这曾经是许多邮件服务器的默认配置;确实,这就是 Internet 最初建立的方式,但是由于垃圾邮件发送者和蠕虫利用它们,开放式邮件中继已变得不受欢迎。许多中继被关闭,或被其他服务器列入黑名单。

为了能够使用您的 ISP 的邮件服务器,您需要首先使用用户名和密码进行身份验证。

您可以尝试破解 php.ini 行,如下所示:

SMTP = 'username:password@ISP's SMTP server address'

这不能保证有效,因为此选项需要在邮件服务器上设置非标准修改或选项。

您的另一个选择是简单地运行您自己的不需要身份验证的本地代理邮件服务器,然后将邮件直接发送到收件人的邮件服务器,或者通过经过身份验证的连接发送到您的邮件服务器。

我不知道 WampServer 推荐使用什么,但使用WampDeveloper Pro推荐的本地邮件服务器是:

  1. 邮件服务器
  2. 可邮寄
  3. 智能邮件

您应该看到每一个的功能和要求。我相信其中之一会干扰 MySQL(因为安装程序会尝试放置它自己的副本)。

于 2011-05-23T14:28:35.420 回答
1

如错误消息所述,您需要对该服务器使用 SMTP 身份验证。

使用 PHP 的内置 SMTP 功能无法做到这一点。

最简单的方法是使用像Swiftmailer这样的预制邮件程序类。是一个如何做到这一点的例子。

于 2011-05-23T11:25:11.163 回答
1

ISPdomain.com SMTP 服务器可能会抱怨您的连接对于其反垃圾邮件规则来说太基础了。

于 2011-05-23T11:20:19.747 回答