2010-12-11 4 views
0

Je reçois l'erreur suivante lors de la présentation d'un formulaire de contact e-mail en utilisant la fonction PHP mail et jQuery:petit problème en utilisant la fonction PHP mail avec jQuery

réponse du serveur SMTP: 554 Le message a été rejeté parce qu'il contient le virus interdit ou le contenu de spam dans mail.php en ligne 26

Voici le code que je utilise pour le PHP:

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


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

Voici le code que je utilise pour l'appel AJAX jQuery:

//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'); 
} 
}); 


}); 

Répondre

0

Vous manquez une esperluette dans votre datastr:

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

devrait être

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

MISE À JOUR

L'erreur SMTP provient du serveur SMTP, vous devrait parler à celui qui court cela et découvrir quels critères ils ont mis en place pour détecter le spam.

Mon supposez qu'un est qu'un email sans corps constitue un spam selon leur définition. L'erreur avec datastr ci-dessus entraînerait un corps NULL. En outre, si vous effectuez des tests sans insérer de prose dans la zone de texte message, le corps sera également de longueur nulle.

Remarque ... Je suis en train de spéculer sur la raison pour laquelle vos messages sont considérés Spam ... parlez au propriétaire du serveur SMTP pour en savoir plus.

+0

NB: Cela pourrait ne pas être l'ensemble de * * solution ... mais il est un début – Dancrumb

+0

ouais, moi aussi eu des problèmes dans le passé des messages bloqués par le serveur à cause d'un corps vide .. – Lucius

0

Je préfère utiliser:

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

Peut-être que le problème se produit dans votre fonction de messagerie. Il serait plus clair si vous postez le code de votre fonction de courrier.

0

Voici le code complet de la fonction de courrier. la première section est commentée b/c je pensais que quelque chose n'allait pas avec ça.

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

    $email_from = "[email protected]***.com"; 
    $email_from2 = $visitor_email; 
    $email_subject = "Inquiry"; 
    $email_body = "here is the body of the message". 


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

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


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