небольшая проблема с использованием почтовой функции PHP с jQuery - PullRequest
0 голосов
/ 11 декабря 2010

Я получаю следующую ошибку при отправке контактной формы по электронной почте с помощью функции PHP mail и jQuery:

Ответ SMTP-сервера: 554 Сообщение было отклонено, поскольку в строке mail.php в строке 26

содержится запрещенный вирус или спам.

Вот код, который я использую для PHP:

   $mailTo = "info@***.com";
   $mailFrom = $_POST['email'];
   $subject = "RFP Inquiry";
   $message = $_POST['message'];


   mail($mailTo, $subject, $message, "From: ".$mailFrom);

Вот код, который я использую для вызова jQuery AJAX:

    //var name = $("#contactname").val();
var email = $("#email").val();
var message = $("#subject").val();
//var age = $("#message").val();
   var datastr ='email=' + email + 'message=' + message;


  $('#submit').click(function(){

$.ajax({
type: "POST",
url: "mail.php",
data: datastr,
cache: false,
 error: function () {

    alert('did not go thru');
   },
success: function(html){
//$("#response").fadeIn("slow");
$("#tab1").html(html);
//setTimeout('$("#response").fadeOut("slow")',2000);
alert('mail sent');
}
});


 });

Ответы [ 3 ]

0 голосов
/ 11 декабря 2010

Я предпочитаю использовать:

data: ({email : $("#email").val(), message: $("#message").val()}),

Возможно, проблема в вашей почтовой функции. Было бы более понятно, если вы отправите код своей почтовой функции.

0 голосов
/ 11 декабря 2010

вот весь код почтовой функции. первый раздел закомментирован, потому что я подумал, что с ним что-то не так.

    <?php
/*
    $name = $_POST['name'];
    $visitor_email = $_POST['email'];
    $message = $_POST['message'];

    $email_from = "info@***.com";
    $email_from2 = $visitor_email;
    $email_subject = "Inquiry";
    $email_body = "here is the body of the message".


    $to = "info@***.com";
    $headers = "From: $email_from";
    //$headers .= "Reply-To: $visitor_email";
    //Send email!
    mail($to,$email_subject,$email_body,$headers);
*/

$mailTo = "info@***.com";
$mailFrom = $_POST['email'];
$subject = "Inquiry";
$message = $_POST['message'];


mail($mailTo, $subject, $message, "From: ".$mailFrom);
?>
0 голосов
/ 11 декабря 2010

Вам не хватает амперсанда в вашем datastr:

var datastr ='email=' + email + 'message=' + message;

должно быть

var datastr ='email=' + email + '&message=' + message;

ОБНОВЛЕНИЕ

SMTPошибка приходит с SMTP-сервера, поэтому вы должны поговорить с тем, кто ее запускает, и выяснить, какие критерии они установили для обнаружения спама.

My предположите , что электронное письмо безТело представляет собой Спам по их определению.Ошибка с datastr выше приведет к пустому телу.Кроме того, если вы проводите тестирование без добавления какой-либо прозы в текстовое поле message, это также приведет к получению тела нулевой длины.

Примечание ... Я размышляю о том, почему ваши сообщениярассматриваются как спам ... поговорите с владельцем SMTP-сервера, чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...