PHP mail()发送错误但不报告错误

时间:2014-08-21 05:09:07

标签: php

我正在运行CentOS 64位,安装php 5.3.3,我有像这样的PHP代码

<?php
session_start(); 
set_time_limit(0);
ini_set("max_execution_time", 1800);
ini_set("display_errors", 1);
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
date_default_timezone_set('Asia/Saigon');

mail("myemail@gmail.com","x","y","From: steve@a.com\n");
?>

电子邮件未发送但也未报告任何错误,我将在php.ini中编辑

error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING
display_errors = On

仍然没有错误报告......

请帮忙。

1 个答案:

答案 0 :(得分:2)

这是因为Spf保护。尝试下面的代码,它将工作

<?php
session_start(); 
set_time_limit(0);
ini_set("max_execution_time", 1800);
ini_set("display_errors", 1);
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
date_default_timezone_set('Asia/Saigon');

mail("myemail@gmail.com","x","y","From: steve@air.com\n");
?>

我将apple.com替换为air.com您无法使用某些域名,例如

  1. support@facebook.com
  2. support@google.com等。
  3. 在php mail()中,因为它们受Sender Policy Framework (SPF)保护,但如果你想要,你可以使用它,它可以适用于任何域

    <?php
    session_start(); 
    set_time_limit(0);
    ini_set("max_execution_time", 1800);
    ini_set("display_errors", 1);
    error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
    date_default_timezone_set('Asia/Saigon');
    
    mail("myemail@gmail.com","x","y","From: steve@ apple.com\n");
    ?>
    

    @ 请注意@apple.com之间的空格,但使用此方法无法向Yahoo个用户发送邮件。最好的选择是买一台SMTP服务器来安静地发送邮件!

    在此处阅读更多内容:https://workaround.org/ispmail/lenny/spf