【问题标题】:Sending mail to local mail server - "SENT: 550 The address is not valid."向本地邮件服务器发送邮件 - “SENT: 550 地址无效。”
【发布时间】:2012-02-05 10:35:49
【问题描述】:

我正在尝试将邮件发送到我的本地邮件服务器。我正在使用 hMailServer 作为邮件服务器,我已经按照此处所述进行了配置:

Setting up local Mail (SMTP, POP3, IMAP) Server on XAMPP

但是当我尝试发送邮件时,我收到了这个错误:

( ! ) 警告:mail() [function.mail]: SMTP 服务器响应:550 地址无效。在 C:\wamp\www\kariyersitem\register.php 上线 161

邮件服务器的日志文件显示此错误如下:

"DEBUG" 3108    "2012-01-08 18:04:24.447"   "Creating session 14"  
"SMTPD" 3108    14  "2012-01-08 18:04:24.448"   "127.0.0.1" "SENT: 220 localhost ESMTP"  
"SMTPD" 1728    14  "2012-01-08 18:04:24.454"   "127.0.0.1" "RECEIVED: HELO olcay-pc"  
"SMTPD" 1728    14  "2012-01-08 18:04:24.455"   "127.0.0.1" "SENT: 250 Hello."  
"SMTPD" 3108    14  "2012-01-08 18:04:24.457"   "127.0.0.1" "RECEIVED: MAIL FROM:<you@yourdomain>"  
"SMTPD" 3108    14  "2012-01-08 18:04:24.458"   "127.0.0.1" "SENT: 550 The address is not valid."  
"SMTPD" 2040    14  "2012-01-08 18:04:24.459"   "127.0.0.1" "RECEIVED: QUIT"  
"SMTPD" 2040    14  "2012-01-08 18:04:24.460"   "127.0.0.1" "SENT: 221 goodbye"  
"DEBUG" 3392    "2012-01-08 18:04:24.461"   "Closing TCP/IP socket"  
"DEBUG" 3392    "2012-01-08 18:04:24.462"   "Ending session 14"  

我已经检查了地址,我确定它是正确的。
谁能告诉我是什么问题?

这是我的邮件代码:

$to      = $frm_kadi;  
$subject = $site_title.' Üyelik Aktivasyonu';  
$message = 'hello';  
$headers = 'From: '.$contact."\r\n".'Reply-To: '.$contact."\r\n".'X-Mailer: PHP/'.phpversion();  
$mresult = mail($to, $subject, $message, $headers);  

我检查了$contact,它在我的config.php 文件中写为olcayertas@gmail.com。在发送邮件之前,我已经使用 echo 函数来调试我的代码,它是正确的。

目前我的 $contact 变量设置为:

$contact = "olcayertas@gmail.com";

更新 1

按照@Jared Farrish 的建议,将php.ini 中的sendmail_from 设置为olcayertas@gmail.com 解决了第一个问题。但是现在我有一个新问题:

"DEBUG" 3108    "2012-01-08 22:15:28.497"   "Creating session 24"  
"SMTPD" 3108    24  "2012-01-08 22:15:28.498"   "127.0.0.1" "SENT: 220 localhost ESMTP"  
"SMTPD" 3108    24  "2012-01-08 22:15:28.499"   "127.0.0.1" "RECEIVED: HELO olcay-pc"  
"SMTPD" 3108    24  "2012-01-08 22:15:28.500"   "127.0.0.1" "SENT: 250 Hello."  
"SMTPD" 4380    24  "2012-01-08 22:15:28.511"   "127.0.0.1" "RECEIVED: MAIL FROM:<olcayertas@gmail.com>"  
"DEBUG" 4380    "2012-01-08 22:15:28.542"   "Total spam score: 0"  
"SMTPD" 4380    24  "2012-01-08 22:15:28.547"   "127.0.0.1" "SENT: 250 OK"  
"SMTPD" 3108    24  "2012-01-08 22:15:28.548"   "127.0.0.1" "RECEIVED: RCPT TO:<olcayertas>"  
"SMTPD" 3108    24  "2012-01-08 22:15:28.548"   "127.0.0.1" "SENT: 550 A valid address is required."  
"SMTPD" 2040    24  "2012-01-08 22:15:28.552"   "127.0.0.1" "RECEIVED: QUIT"  
"DEBUG" 2040    "2012-01-08 22:15:28.552"   "Deleting message file"  
"SMTPD" 2040    24  "2012-01-08 22:15:28.552"   "127.0.0.1" "SENT: 221 goodbye"  
"DEBUG" 4380    "2012-01-08 22:15:28.555"   "Closing TCP/IP socket"  
"DEBUG" 4380    "2012-01-08 22:15:28.556"   "Ending session 24"  

它似乎没有完全获得目标地址。我正在尝试向自己发送邮件,但它只收到用户名 olcayertas 和缺少域 @gmail.com

更新 2

我已经解决了第二个问题。这是我的错。

更新 3

现在我收到此错误:

"SENT: 530 SMTP authentication is required."

但是我已经在Settings-&gt;Ptotocols-&gt;SMTP-&gt;Delivery of e-mail-&gt;SMTP Relayer下填写了SMTP认证设置。 Server requires authenticationUse SSL 选项已检查。

更新 4

禁用Settings-&gt;Advanced-&gt;IP Ranges-&gt;My Compter中hMailServer的Require SMPTP authentication选项解决了SMTP认证问题。

【问题讨论】:

  • 请告诉我们mail() 的参数是什么。
  • +1 用于实际查看 PHP 相关问题的错误日志。
  • 您使用的实际 SMTP 设置(在合理范围内)是什么?
  • 什么是$contact?这是给你的问题,而不是$to(至少根据hMailServer docs)。

标签: php email local mail-server


【解决方案1】:

您似乎正在像这样发送“发件人”电子邮件(发件人):you@yourdomainyourdomain 是无效域。将此更改为有效的电子邮件地址。

【讨论】:

    【解决方案2】:

    您使用you@yourdomain 作为发件人地址,服务器拒绝了它。
    请改用真实地址。

    【讨论】:

    • 我已经检查过了。它在我的 config.php 文件中写为 olcayertas@gmail.com。在发送邮件之前,我已经使用 echo 函数来调试我的代码,它是正确的。
    • OK,但是发送邮件时有两个From地址:一个是SMTP不使用的Header的From,另一个是MAIL FROM中SMTP使用的信封的From命令。这是给你带来麻烦的后一个。使用 sendmail,可以使用 -f 选项传递信封-From。这种选项可以在 additional_parameters 参数中传递给 php mail() 函数。
    【解决方案3】:

    我猜$contact&lt;olcayertas@gmail.com&gt;,这就是导致问题的原因。尝试将其更改为olcayertas@gmail.com

    【讨论】:

    • 试试:$contact = '"Olcay Ertaş" &lt;olcayertas@gmail.com&gt;' ? (值得一试)
    • sendmail_from 是偶然在 php.ini 中设置的吗?
    【解决方案4】:

    要解决SENT: 550550 The address is not valid. 问题,您必须将sendmail_from 设置为php.ini 文件中的有效邮件地址。

    要解决SENT: 530 SMTP authentication is required 问题,请打开hMailServer Administrator。转到设置-> 高级-> IP 范围-> 我的计算机。禁用“要求 SMTP 身份验证”部分下的所有选项。

    【讨论】:

    • 530 SMTP 身份验证:它可以工作,但必须更改 Internet 设置而不是计算机设置才能将电子邮件从本地主机发送到网络服务器的同一域。必须取消选中“需要 SMTP 身份验证”中的“本地到本地电子邮件地址”。我的 php.ini 中的默认发件人是 admin@webserv.com。它使我能够发送电子邮件到,例如:notify@webserv.com。
    • 我用 hmailserver 在我的 wamp localhost 中发送电子邮件真是太棒了
    【解决方案5】:

    请记住,每次更改 php.ini 后,

    你应该重启 wamp (! ! !)

    读取更新后的 php.ini

    附言你可能需要在你的php脚本中使用ini_set("sendmail_from", "your_user@gmail.com");,在mail()之前;

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      相关资源
      最近更新 更多