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


PHP mail() send error but not report error

我运行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

仍然没有错误报告…

请帮。

这是因为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");
?>

我用air.com代替了apple.com,你不能使用一些域,如

  1. support@facebook.com
  2. support@google.com

在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