PHP Mail永远不会达到目标

时间:2014-03-21 10:21:52

标签: php email

我正在尝试使用内置邮件功能发送邮件。 但邮件永远不会到达收件人。

这是mail.log中的输出,请注意我已将我的真实域名更改为mydomain.com

Mar 21 11:15:42 localhost sendmail[30741]: s2LAFgnJ030741: from=www-data, size=2138, 
class=0, nrcpts=1, msgid=<201403211015.s2LAFgnJ030741@mydomain.com>, relay=www-data@localhost

Mar 21 11:15:42 localhost sm-mta[30742]: s2LAFgsJ030742: from=<www-data@mydomain.com>, size=2419, 
class=0, nrcpts=1, msgid=<201403211015.s2LAFgnJ030741@mydomain.com>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]


Mar 21 11:15:42 localhost sendmail[30741]: s2LAFgnJ030741: to=foo@mydomain.com, ctladdr=www-data (33/33), 
delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32138, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (s2LAFgsJ030742 Message accepted for delivery)

Mar 21 11:15:42 localhost sm-mta[30744]: s2LAFgsJ030742: to=<foo@mydomain.com>, delay=00:00:00, xdelay=00:00:00, 
mailer=esmtp, pri=122419, relay=spamfilter.spam.com. [xx.xx.xx.xx], dsn=5.0.0, stat=Service unavailable

Mar 21 11:15:42 localhost sm-mta[30744]: s2LAFgsJ030742: s2LAFgsJ030744: DSN: Service unavailable

Mar 21 11:15:42 localhost sm-mta[30744]: s2LAFgsJ030744: to=<www-data@mydomain.com>, delay=00:00:00, xdelay=00:00:00, 
mailer=esmtp, pri=30000, relay=spamfilter.spam.com., dsn=5.0.0, stat=Service unavailable

Mar 21 11:15:42 localhost sm-mta[30744]: s2LAFgsJ030744: s2LAFgsK030744: return to sender: Service unavailable

Mar 21 11:15:42 localhost sm-mta[30744]: s2LAFgsK030744: to=foo, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30000, dsn=2.0.0, stat=Sent

我的PHP.INI中的相关行

SMTP = XX.XX.XX.XX&lt; - 已验证它可以与PHPMailer一起使用。

SMTP_PORT = 25

sendmail_path = / usr / sbin / sendmail -t -i

如果您查看上面的邮件错误,可能是什么原因引起的?我知道mydomain.com的spamfilter有一个例外。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的配置让邮件本地就可以了 您可以使用sendmail包从localhost发送邮件,默认情况下,sendmail包随XAMPP提供。因此,如果您正在使用XAMPP,那么您可以轻松地从localhost发送邮件。

例如,您可以为gmail配置C:\xampp\php\php.inic:\xampp\sendmail\sendmail.ini以发送邮件。

C:\xampp\php\php.ini中查找extension=php_openssl.dll并从该行的开头删除分号,使SSL为本地主机的gmail工作。

In `php.ini` file find `[mail function]` and change
SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

现在打开C:\ xampp \ sendmail \ sendmail.ini。使用以下代码替换sendmail.ini中的所有现有代码

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
force_sender=my-gmail-id@gmail.com

现在你完成了!!使用邮件功能创建php文件并从localhost发送邮件。

PS:不要忘记用你的id和密码替换上面代码中的my-gmail-id和my-gmail-password。另外,如果您从上面复制了设置,请不要忘记删除重复的密钥。例如,如果sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"文件中有另一个sendmail_path:php.ini,则会在以下行中发表评论