web-dev-qa-db-fra.com

Comment puis-je empêcher les mails envoyés par PHP mail () d'aller au spam?

J'utilise la fonction mail () de PHP pour envoyer des courriels (le processus sendmail est en cours d'exécution). Mais tous les mails vont spammer (en cas de gmail). J'ai essayé beaucoup de trucs que j'ai trouvés sur le net mais aucun ne fonctionne, dites-moi s'il vous plaît de tout truc sûr.

31
Partyboy

Vous devez ajouter un en-tête d'aiguille:

Exemple de code:

$headers = "From: [email protected]\r\n";
$headers .= "Reply-To: [email protected]\r\n";
$headers .= "Return-Path: [email protected]\r\n";
$headers .= "CC: [email protected]\r\n";
$headers .= "BCC: [email protected]\r\n";

if ( mail($to,$subject,$message,$headers) ) {
   echo "The email has been sent!";
   } else {
   echo "The email has failed!";
   }
?> 
33
user744116

Il n'y a pas de truc sûr. Vous devez explorer les raisons pour lesquelles vos courriers sont classés comme spam. SpamAssassin a une page décrivant Quelques conseils pour que les expéditeurs légitimes évitent les faux positifs . Voir aussi Coder l'horreur: vous souhaitez donc envoyer un e-mail (avec code)

18
Oswald

Essayez PHP bibliothèque Mailer .
Ou Envoyer un courrier via SMTP, filtrez-le avant de l'envoyer.
Essayez également de donner tous les détails comme FROM, return-path.

4
Rikesh
<?php

$subject = "this is a subject";
$message = "testing a message";




  $headers .= "Reply-To: The Sender <[email protected]>\r\n"; 
  $headers .= "Return-Path: The Sender <[email protected]>\r\n"; 
  $headers .= "From: The Sender <[email protected]>\r\n";  
  $headers .= "Organization: Sender Organization\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
  $headers .= "X-Priority: 3\r\n";
  $headers .= "X-Mailer: PHP". phpversion() ."\r\n" ;



mail("[email protected]", $subject, $message, $headers); 


?> 
3
Ahmed Medhat
$fromMail = 'set your from mail';
$boundary = str_replace(" ", "", date('l jS \of F Y h i s A'));
$subjectMail = "New design submitted by " . $userDisplayName;


$contentHtml = '<div>Dear Admin<br /><br />The following design is submitted by '. $userName .'.<br /><br /><a href="'.$sdLink.'"><b>Click here</b></a> to check the design.</div>';
$contentHtml .= '<div><a href="'.$imageUrl.'"><img src="'.$imageUrl.'" width="250" height="95" border="0" alt="my picture"></a></div>';
$contentHtml .= '<div>Name : '.$name.'<br />Description : '. $description .'</div>';

$headersMail = '';
$headersMail .= 'From: ' . $fromMail . "\r\n" . 'Reply-To: ' . $fromMail . "\r\n";
$headersMail .= 'Return-Path: ' . $fromMail . "\r\n";
$headersMail .= 'MIME-Version: 1.0' . "\r\n";
$headersMail .= "Content-Type: multipart/alternative; boundary = \"" . $boundary . "\"\r\n\r\n";
$headersMail .= '--' . $boundary . "\r\n";
$headersMail .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n";
$headersMail .= 'Content-Transfer-Encoding: base64' . "\r\n\r\n";
$headersMail .= rtrim(chunk_split(base64_encode($contentHtml)));

try {
    if (mail($toMail, $subjectMail, "", $headersMail)) {
        $status = 'success';
        $msg = 'Mail sent successfully.';
    } else {
        $status = 'failed';
        $msg = 'Unable to send mail.';
    }
} catch(Exception $e) {
    $msg = $e->getMessage();
}

Cela fonctionne très bien pour moi. Il inclut un courrier avec une image et un lien et fonctionne pour toutes sortes d'identifiants de messagerie. L'indice est d'utiliser parfaitement tout l'en-tête.

Si vous le testez à partir de localhost, définissez ce qui suit avant de vérifier:

Comment paramétrer l'envoi de courrier depuis localhost xampp:

  1. commentez tout dans D:/xampp/sendmail/sendmail.ini et mentionnez le sous-dessous 

    [envoyer un mail]

    smtp_server=smtp.gmail.comsmtp_port=587error_logfile=error.logdebug_logfile=debug.logauth_username=yourmailid@domain.comauth_password=your-mail-password [email protected]

  2. Dans D:/xampp/php/php.ini A. Sous 

    [fonction mail]

    SMTP = smtp.gmail.com smtp_port = 587

b. mettre le sendmail_from = [email protected] c. uncomment sendmail_path = "\" D:\xamp\sendmail\sendmail.exe\"-t" Par conséquent, il devrait ressembler à ce qui suit

sendmail_path = "\"D:\xamp\sendmail\sendmail.exe\" -t"

ré. comment sendmail_path = "D:\xamp\mailtodisk\mailtodisk.exe" Par conséquent, il devrait ressembler à ce qui suit

;sendmail_path="D:\xamp\mailtodisk\mailtodisk.exe"

e. mail.add_x_header=Off

0
Ipsita Rout