3

wordpress ブログの連絡フォームから送信されたメールを受信するために wp_mail() を使用しています。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' ); 
4

1 に答える 1

8

メールがスパムとしてマークされている可能性があります。または、単にメール プロバイダーがメールの受信トレイへの到達を許可していない可能性があります。SMTP 経由で送信していますか?

SPFレコードを設定していますか? ウェブサイトからメールを送信していて、from ヘッダーが@gmail.comまたはに設定されている場合@hotmail.com、メールは gmail または hotmail サーバーから発信されたものではないため、これは受信トレイに確実に届きません。フィッシング攻撃を試みています。

編集:

いいえ、スパムとしてマークされていません。スパムメールも確認しました。メールが全く届かない。wp_mail() は、メールを送信したら true を返す必要がありますか? では、from ヘッダーを別のものに変更する必要がありますか?

-vigneshmoha

これは、メールがサーバーを離れたことを意味します。サーバーと受信トレイの間には他にも多くの手順があり、このプロセスでいくつかの異なる問題が発生する可能性があるため、メールが受信トレイに到着することを意味するわけではありません。ヘッダーをテストしてみてFrom:、に変更してくださいexample@yourdomainname.com

于 2013-10-25T08:31:09.317 に答える