PHP mail()不起作用

Riv*_*ers 20 php email

我想用激活邮件编写简单的注册表单等等.但由于某些原因邮件()不发送的电子邮件,或我的3个不同的电子邮件帐户(的Hotmail,Gmail,雅虎)不接受他们,因此甚至不把它们放到垃圾邮件文件夹.

码:

<?php
    $mailto = 'xxx@example.com';
    $subject = 'the subject';
    $message = 'the message';
    $from = 'system@example.net';
    $header = 'From:'.$from;

    if(mail($mailto,$subject,$message,$header)) {
        echo 'Email on the way';
    }
?>
Run Code Online (Sandbox Code Playgroud)

每次输出'途中电子邮件',所以mail()返回true,对吗?我真的没有得到它,我甚至试图关闭我的小飞贼(虽然我没有阻止SMTP).

Pis*_*3.0 13

请参阅Jeff Atwood撰写的这篇文章.

简而言之:仅仅因为您的代码已将电子邮件发送给邮件传输代理,这并不意味着它将被传递.是的,mail()返回true意味着" 接受交付" - 这意味着"看起来像一封电子邮件,我会尝试提供这个",而不是"它已经交付".甚至手册中mail()都说:

需要注意的是,只是因为邮件被接受交付,但它是非常重要的不是意味着邮件实际上会达到预期的目标.

Soooo:检查您的MTA(是从本地计算机发送的电子邮件?),尝试发送到本地地址(如果该地址是本地地址,是否已送达?),尝试从您的邮件发送电子邮件客户端,使用与PHP脚本相同的设置,尝试发送到较小的邮件主机,允许您关闭反垃圾邮件(它是否在网络外部传送?).另外,请阅读该文章,并检查那里提到的要点.


小智 5

也许您的服务器未配置为处理mail().

<?php
    print phpinfo();  
?>
Run Code Online (Sandbox Code Playgroud)

看看 sendmail_path

  • 下一步是什么?我的是 _/usr/local/bin/phpsendmail_ (21认同)

ldg*_*ldg 0

检查您的 phpinfo 和/或 php.ini 中的邮件设置,并确保您可以使用 php 尝试使用的任何程序发送邮件。如果命令执行但不知道邮件是否实际发出,则该函数将成功。