Php wp_mail返回true,但不接收邮件

Php wp_mail返回true,但不接收邮件,php,jquery,ajax,wordpress,email,Php,Jquery,Ajax,Wordpress,Email,我正在使用wp_mail()接收通过wordpress博客中的联系人表单提交的邮件。wp_mail()返回true,但问题是我没有收到任何邮件。我也试着把邮箱地址从gmail改成hotmail,但没有成功 我的联系人模板中的Ajax代码 $('#send').click(function() { //For Validation function validateText(name) { var pattern = /^[a-zA-Z'-.\s]+$/;

我正在使用wp_mail()接收通过wordpress博客中的联系人表单提交的邮件。wp_mail()返回true,但问题是我没有收到任何邮件。我也试着把邮箱地址从gmail改成hotmail,但没有成功

我的联系人模板中的Ajax代码

$('#send').click(function() {
    //For Validation
    function validateText(name) {
        var pattern = /^[a-zA-Z'-.\s]+$/;
        if (pattern.test(name)) {
            return true;
        } 
        return false;
    }
    //For Validation
    function validateMail(mail) {
        var pattern = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,3}$/;
        //var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
        if (pattern.test(mail)) {
            return true;
        }     
        return false;
    }
    //Getting values from the form
    var name = $('#name').val(), mail = $('#mailid').val(), query = $('#message').val(), error = 1;
    //For Validation
    if(name == "" || !(validateText(name))) {
        $('#name').addClass('error');
        error = 0;
    }
    ////For Validation
    if(mail == "" || !(validateMail(mail))) {
        $('#mailid').addClass('error');
        error = 0;
    }
    //For Validation
    if(query == "") {
        $('#message').addClass('error');
        error = 0; 
    }
    if(!error) { // If validation fails
        return false;
    }

    $('#sendAlert').show();
        $('#send').html('Sending...');
        $.post(ajax_object.ajaxurl, { // Using ajax post method to send data
            action: 'ajax_action',
            sendmail: 'nothing',
            name: name,
            mail: mail,
            query: query
        }, function(data) {
            $('#send').html('Send');
            alert(data); // Alerting response
            return false;
        });

   });
在Functions.php中

function ajax_action_stuff() {
if(isset($_POST['sendmail'])) {

    function set_html_content_type()
    {
    return 'text/html';
    }

    if(isset($_POST['name']) && isset($_POST['mail']) && isset($_POST['query'])) {  

    $name = $_POST['name'];
    $email = $_POST['mail'];
    $query = $_POST['query'];
    $to = 'vigneshmoha@gmail.com';

    if($name == "" || $email == "" || $query == "") {
        echo "Fail";
        return false;
    }

    $subject = "Website - Query from ".$name;
    $message = "Hi,
        <p><strong>Name</strong>:".$name."</p>
        <p><strong>Mail</strong>:".$email."</p>
        <h3><strong>Query</h3>
        <p>".$query."</p>";
    $headers[] = 'From: no-reply@gmail.com'."\r\n";
    $headers[] = '';

    add_filter( 'wp_mail_content_type', 'set_html_content_type' );
    $mailsent = wp_mail( $to, $subject, $message, $headers);
    remove_filter( 'wp_mail_content_type', 'set_html_content_type' ); // reset content-type to to avoid conflicts -- http://core.trac.wordpress.org/ticket/23578


    if($mailsent) {
        echo $to;
    } else {
        echo 'error';
    }
   } else {
    echo 'error';   
   }

 } else {
    echo 'error';
 }
 die();
   }
   add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' );
   add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' ); 
函数ajax\u action\u stuff(){
如果(isset($_POST['sendmail'])){
函数集\ html \内容\类型()
{
返回“text/html”;
}
如果(isset($\u POST['name'])和&isset($\u POST['mail'])和&isset($\u POST['query']){
$name=$_POST['name'];
$email=$_POST['mail'];
$query=$_POST['query'];
$to$vigneshmoha@gmail.com';
如果($name==“”| |$email==“”| |$query==“”){
回应“失败”;
返回false;
}
$subject=“网站-从“$name;
$message=“您好,
名称:“$Name。”

邮件:“$email。”

查询 “$query。”

”; $headers[]='发件人:否-reply@gmail.com“。”\r\n”; $headers[]=''; 添加过滤器(“wp\u邮件内容类型”、“设置html\u内容类型”); $mailssent=wp_mail($to、$subject、$message、$headers); 删除过滤器('wp_-mail_-content_-type','set_-html_-content_-type');//重置内容类型以避免冲突--http://core.trac.wordpress.org/ticket/23578 如果($mailssent){ echo$to; }否则{ 回声“错误”; } }否则{ 回声“错误”; } }否则{ 回声“错误”; } 模具(); } 添加动作(“wp\u ajax\u ajax\u action”、“ajax\u action\u stuff”); 添加动作(“wp\u ajax\u nopriv\u ajax\u action”、“ajax\u action\u stuff”);
您的电子邮件可能被标记为垃圾邮件,或者只是您的电子邮件提供商不允许它进入您的收件箱,您是否通过SMTP发送

你有SPF记录设置吗?如果您正在从您的网站发送电子邮件,并且将发件人标题设置为
@gmail.com
@hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自gmail或hotmail服务器,而是来自您的,因此它认为您正在尝试某种钓鱼攻击

编辑:


不,它没有标记为垃圾邮件。我也检查了垃圾邮件。邮件不是 根本不接收。wp_mail()发送邮件后应返回true 邮寄对吗?那么,我是否应该将标题从标题更改为其他内容

-维涅什莫哈


这意味着邮件已经离开了你的服务器,但并不意味着它会到达你的收件箱,因为在你的服务器和收件箱之间还有很多其他步骤,在这个过程中可能会出现一些不同的问题。尝试从以下位置测试
标题,更改为
example@yourdomainname.com

您的电子邮件有可能被标记为垃圾邮件,或者只是您的电子邮件提供商不允许它进入您的收件箱,您是否通过SMTP发送?你有SPF记录设置吗?如果您从您的网站发送电子邮件,并且将发件人标题设置为
@gmail.com
@hotmail.com
,这肯定不会到达您的收件箱,因为电子邮件不是来自gmail或hotmail服务器,而是来自您的,因此它认为您正在尝试钓鱼攻击不,它没有标记为垃圾邮件。我也检查了垃圾邮件。邮件根本没有收到。wp_mail()在发送邮件后应该返回true,对吗?那么,我是否应该将“从邮件头”更改为其他内容?是的,这是正确的,但这意味着邮件已离开服务器,但并不意味着它将到达您的收件箱,因为在服务器和收件箱之间还有许多其他步骤,在此过程中可能会出现一些不同的问题。尝试测试from标头,更改为
example@yourdomainname.com
太棒了!它起作用了。我已将标题更改为example@mydomainname.com. 谢谢。为了堆栈溢出的规则,让我添加它作为一个答案。另一个考虑是电子邮件根本没有被发送。大多数主机,尤其是共享主机,都有特定的要求,不允许发送电子邮件地址与站点域不匹配的基于脚本的电子邮件。在这种情况下,wp_-mail将返回true,因为它生成了电子邮件,但它不会去任何地方。请记住,某些主机不仅需要匹配域,还需要实际地址为实际电子邮件。与您的主持人核实他们的具体要求。