mail()失败,但返回true

| 我正在尝试在服务器上使用php
mail()
函数。很奇怪,它返回true,但是我的电子邮件收件箱中什么也没有收到。 但是,cpanel电子邮件转发器工作正常。 因此,这不是配置的事情,因为转发器向我发送电子邮件了吗? 我尝试添加:
ini_set(\"sendmail_from\", \"do-not-reply@gmail.com\");
但这没有用。 这是我的代码:
$subject = \"My Subject\";
$body = \"Email Body \";
$headers = \'From: do-not-reply@domain.com\' . \"\\r\\n\" . 
    \'Reply-To: do-not-reply@domain.com\' . \"\\r\\n\" . 
    \'X-Mailer: PHP/\' . phpversion(); 

if (mail($email,$subject,$body,$headers))
    echo \"Sent!\";
else
    echo \"Fail!\";
    
已邀请:
        有许多原因可能导致此问题。这里有一些: 该邮件已收到,但被标记为垃圾邮件。 收件人的地址不正确。 发送邮件服务器上的邮件队列很慢。 接收邮件服务器上的邮件队列很慢。 当外发邮件服务器接受邮件进行传递时,“ 0”返回true。您将需要对其他可能性进行故障排除以找到故障点。     
        
mail()
函数很少返回returns5以外的值。它只关心已成功将电子邮件发送给MTA(邮件传输代理,即实际发送该邮件的程序)这一事实。 如果邮件格式不正确,MTA只会立即拒绝它。在这种情况下,您会在PHP中遇到错误。但是由于多种原因,它也可能拒绝电子邮件或在从PHP接受电子邮件后发送失败,由于种种原因,PHP不会对此有任何想法,因为它已经收到了5封响应。 您的MTA将有一个错误日志,如果该错误是本地发生的,您可以检查更多信息。     
        我使用的脚本在同一域中发送和接收时遇到了这个问题。您是否尝试过将电子邮件发送到另一个域中的电子邮件地址?这可能有助于缩小可能出现的问题。     
        我们面临着完全相同的问题。解决方法是在php.ini中设置适当的sendmail_path。 sendmail_path = \“ / usr / sbin / sendmail -t -i \” 设置以上内容解决了此问题。     
        发送测试电子邮件后,检查您的mail.log:
sudo tail -f /var/log/mail.log
然后,您可以看到分配给您尝试发送的最后一封电子邮件的ID。例如。我知道了:
Jan 11 23:03:14 vagrant-ubuntu-trusty-64 postfix/pickup[17228]: 69F3441529: uid=33 from=<www-data>
69F3441529是分配给该电子邮件的唯一ID。然后,您可以对具有该ID的所有行的日志进行grep ...
sudo grep 69F3441529 /var/log/mail.log
然后,您应该能够发现可能出现的任何错误消息,然后对它们进行Google搜索:)     
        就我而言,将服务器设置从IPv6地址更改为IPv4地址可以解决此问题。     

要回复问题请先登录注册