2015-09-18 1 views
-1

Quelqu'un peut-il m'aider à comprendre pourquoi le PHP ci-dessous provoque l'envoi de messages électroniques à Gmail? J'ai essayé de suivre d'autres directions pour définir les en-têtes appropriés, mais je rencontre toujours des problèmes avec mes e-mails entrant dans le filtre anti-spams de Gmail.Le formulaire de courrier électronique de PHP est envoyé à Gmail spam

Toute aide serait appréciée!

<?php 
//set validation error flag as false 
$error = false; 
//check if form is submitted 
if (isset($_POST['submit'])) 
{ 
    $name = trim($_POST['txt_name']); 
    $fromemail = trim($_POST['txt_email']); 
    $inquiry = trim($_POST['txt_inquiry']); 
    $message = trim($_POST['txt_msg']); 

    //name can contain only alpha characters and space 
    if (!preg_match("/^[a-zA-Z ]+$/",$name)) 
    { 
     $error = true; 
     $name_error = "Please enter a real name"; 
    } 
    if(!filter_var($fromemail,FILTER_VALIDATE_EMAIL)) 
    { 
     $error = true; 
     $fromemail_error = "Please enter a valid email address"; 
    } 
    if(empty($inquiry)) 
    { 
     $error = true; 
     $inquiry_error = "Please enter your subject"; 
    } 
    if(empty($message)) 
    { 
     $error = true; 
     $message_error = "Please enter your message"; 
    } 
    if (!$error) 
    { 
     //send mail 
     $toemail = "[email protected]"; 
     $subject = "inquiry from visitor " . $name; 
     $body = "Here goes your Message Details: \n\n Name: $name \n From: $fromemail \n Inquiry: $inquiry \n Message: \n $message"; 
     $headers = "From: $fromemail\n"; 
     $headers .= "Reply-To: $fromemail"; 
     $headers .= "Return-Path: $fromemail"; 

     if (mail ($toemail, $inquiry, $body, $headers)) 
      $alertmsg = '<div class="alert alert-success text-center">Message sent successfully. We will get back to you shortly!</div>'; 
     else 
      $alertmsg = '<div class="alert alert-danger text-center">There is error in sending mail. Please try again later.</div>'; 
    } 
} 

?>

+0

Avez-vous vérifié vos en-têtes $ avec un dd() ou var_dump() ou sth ??? parce que ce type d'écriture est en quelque sorte risqué –

Répondre

1

Il se pourrait que votre adresse IP du serveur que vous envoyez l'email avec elle utilisée à d'autres fins que l'ont marquée comme adresse de spam.

La plupart du temps, lorsque vous ajoutez DKIM et SPF à votre serveur de messagerie (si vous en utilisez un), vous résoudrez ce problème.

Une solution essier serait d'utiliser un service externe de diffusion afin que vous qu'ils peuvent gérer pour vous

0

J'ai souvent fait l'expérience, que mails qui sont directement obtenir envoyés par PHP sont reconnus comme SPAM ...

mon approche est maintenant, toujours utiliser un SMTP-Server pour envoyer ces e-mails ...

this poste pourrait vous aider!