mail()php返回true但邮件未收到

时间:2014-08-18 13:10:11

标签: php email

尝试从我的ubuntu 14.04 localhost发送电子邮件。 我是php的邮件()。它返回true但我没有收到任何电子邮件。 尝试使用不同的提供商(gmail,yahoo)。 但每次我在mail.log中收到此消息:

Aug 18 15:05:10 salvatore-vaio sm-mta[5378]: s7ID59ib005376: to=<dibenedettosa@yahoo.it>, ctladdr=<www-data@salvatore-vaio.huawei.com> (33/33), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=121979, relay=mx-eu.mail.am0.yahoodns.net. [188.125.69.79], dsn=4.0.0, stat=Deferred: Connection refused by mx-eu.mail.am0.yahoodns.net.

我试过了:

telnet mx-eu.mail.am0.yahoodns.net 465

但我收到以下消息:

telnet:无法连接到远程主机:网络无法访问

也试过:

ping -c 3  mx-eu.mail.am0.yahoodns.net

得到了这个:

--- mx-eu.mail.am0.yahoodns.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 168.969/445.192/995.807/389.344 ms

另外我的php.ini:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.mail.yahoo.com      
; http://php.net/smtp-port
smtp_port = 465
auth_username = myid
auth_password = mypass

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = dibenedettosa@yahoo.it

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "/usr/sbin/sendmail -t -i"

找不到任何解决方案......

3 个答案:

答案 0 :(得分:6)

您不得使用雅虎邮件服务器转发电子邮件。您需要进行身份验证才能使用它。使用mail()到配置文件可以实现这一点,但使用PHPMailerSwiftMail可以更轻松。

您的邮件转移代理:salvatore-vaio (sm-mta)

不允许使用mx-eu.mail.am0.yahoodns.net

这是为了防止垃圾邮件。

对于发送邮件地址www-data@salvatore-vaio.huawei.com

nsaboard:~# host salvatore-vaio.huawei.com
Host salvatore-vaio.huawei.com not found: 3(NXDOMAIN)

您需要设置MX DNS记录和不同的技术来提高声誉。 (如SPF和DKIM。)。

如果您直接使用雅虎,请将sendmail_from设置为雅虎地址。

消息延迟可能是由几件事引起的。

答案 1 :(得分:0)

您的问题可能是您需要在自己的smtp上表明身份。

检查你的php.ini是否有smtp服务器。将smtp更改为您实际可以使用的那个。

答案 2 :(得分:0)

最后我修好了。 正如@DanFromGermany建议我从here下载PHPMailer并使用该页面中发布的示例。

此外,我不得不面对关于gmail的“两步认证”的第二个问题。 这需要为允许登录的应用程序生成特定密码。 查找here Google文档

之后它起作用了!