FONCTION ENVOI DE MAIL PHP QUI PERMET DE PASSER LE FILTRE ANTI SPAM

masaya Messages postés 4 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 27 avril 2011 - 27 avril 2011 à 23:32
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015 - 21 mai 2011 à 19:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53100-fonction-envoi-de-mail-php-qui-permet-de-passer-le-filtre-anti-spam

cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
21 mai 2011 à 19:42
Petite remarque importante concernant l'assimilation des mails aux spam!

Maintenant, pour pouvoir envoyer des mails sur certains domaines, il faut que votre domaine soit équipé d'un enregistrement SPF (Sender Policy Framework)

En gros, l'enregistrement SPF d'un domaine doit contenir les domaines et IP qui sont autorisé à envoyer des mails pour ce domaine
Lorsque l'on envoi le mail à un client protégé par un antispam qui contrôle le SPF, l'antispam va vérifier si l'adresse IP et le domaines d'origine de l'expéditeur se trouve bien dans la liste des adresses autorisées. Si ce n'est pas le cas, le mail est non seulement rejeté, mais l'IP et domaine de l'expéditeur sont communiqué à des serveurs de liste noire.

Quand le domaine n'a pas de SPF, cela dépend de la config du client, certains accepte quand même l'envoi d'autre le refuse.

En dehors de cela, la structure des séquences IP du mail doit être correcte. Si elle est altérées, le mail est systématiquement considéré comme frauduleux

Celà resemble à :

Received: from srv5.serveur2.com (root@localhost)
by domain.be (9.12.7/9.12.7) with ESMTP id o1g3ed2y8k2d3g3
for <moi@skynet.be>; Sat, 21 May 2011 10:42:39 +0200
X-ClientAddr: 10.11.12.63
Received: from mx1.anti-spam.lu (mx1.anti-spam.lu [10.11.12.63])
by srv5.serveur2.com (9.12.7/9.12.7) with ESMTP id o1g3ed2y2f3df5u
for <moi@skynet.be>; Sat, 21 May 2011 10:42:39 +0200

Cette structure est écrite par les serveurs qui reçoivent successivement le mail. Chaque serveur indique son IP et adresses ainsi que l'IP et adresse de celui qui lui à envoyé le mail (X-ClientAddr).

Lorsqu'un serveur reçoit le mail, il vérifie si les entêtes sont dans un ordre temporel croisant et si dans cet ordre les adresses de l'expéditeur jusqu'au serveur lui même est correcte.
La présence d'une entrée non valide ou manquante produit le refus du mail.

Pour l'explication des SPF: Voir les lien suivants:
http://www.falconnet.fr/SPF-Proteger-ses-domaines-du-SPAM.html
http://www.amenwiki.com/index.php/Comment_configurer_le_SPF_%3F
http://www.google.com/support/a/bin/answer.py?hl=fr&answer=33786
kaunis Messages postés 1 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 12 mai 2011
12 mai 2011 à 11:56
Bonjour,

Je n'arrive à faire fonctionner ce code. Un message s'affiche en disant que l'email est bien parti mais aucun email n'arrive sur la boîte de réception.
L'envoi en masse affiche que le format de l'email n'est pas correct (avec le code modifié comme spécifié)

Merci pour vos réponses
cs_claude77260 Messages postés 54 Date d'inscription dimanche 20 décembre 2009 Statut Membre Dernière intervention 8 avril 2013
11 mai 2011 à 12:52
Bonjour,

sur le 3eme script envoi emailing,le fonctionnement est ok sur 1 émail mais pas sur deux séparés par une virgule

merci d'avance
McGyver59 Messages postés 26 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 1 décembre 2013
10 mai 2011 à 20:28
Ok je vais voir sa car j'ai essayez plein de script et a chaque fois les emails reviennent non distribuée le plus c'est orange qui ne les distribu pas considéré comme spam
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
10 mai 2011 à 19:43
il existe des tas de classe pour envoyer des mails, certaine plus compliquées les unes que les autres

- phplib (http://sourceforge.net/projects/phplib) qui contient une classe d'envoi des mails (très compliquer à utiliser)

- phpMailer (sourceforge.net/projects/phpmailer) qui est une classe assez lourde, mais souvent utilisée, certaine fonctions sont manquantes.

- SendMail : Classe très complète et facile à utiliser en conservant un code php très propre. ( http://www.phpcs.com/codes/CLASSE-MESSAGERIE_44094.aspx ) - Cette classe fut créé pour pallier à l'absence de certaines fonctionnalité et aussi à la lourdeur des usines à gaz comme phpMailer

Toutes ces classe sont sous licence GPL ou équivalent ==> Librement réutilisable

Par contre en ce qui concerne RMAIL (http://rubydoc.info/gems/rmail/1.0.0/RMail ), il est sous licence propriétaire ==> non réutilisable sans avoir acquis la licence.
McGyver59 Messages postés 26 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 1 décembre 2013
10 mai 2011 à 16:47
Je viens de tester celui en email de masse et Gmail met les emails dans les spams
cs_5prpali Messages postés 5 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 28 février 2010
2 mai 2011 à 10:39
Tout cela est très bien pour la pédagogie et prendre note des spécificités de la norme RFC822.
Mais quand on pratique on devient très paresseux et personnellement j'utilise la classe RMAIL qui me fournit tous les méthodes pour faire des E-mailings nickel et me laisse un code php propre et très lisible.
alain04 Messages postés 25 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 27 août 2012
2 mai 2011 à 07:52
Bonjour ALIENAT,
j'utilise PG-MALINGLIST-PRO et je n'arrive pas à faire fonctionner ton astuce avec ce soft.
Tu as une idée du pourquoi?
Merci.
alienat Messages postés 4 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 23 septembre 2010
29 avril 2011 à 00:37
pourquoi tu met $eol="\r\n"; et $eol="\r";
La norme RFC822 impose que les entête de mail se termine exclusivement par \r\n

Je ne connais pas cette norme...
Mais par contre vous pouvez mettre chr(13) à la place de $eol...
jantoine Messages postés 15 Date d'inscription samedi 20 janvier 2007 Statut Membre Dernière intervention 3 juillet 2011
28 avril 2011 à 17:20
bonjour,
Ça a l'air super, dommage du peut de commentaire...
Cdt
Antoine
cs_janhsh Messages postés 31 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 24 janvier 2015
28 avril 2011 à 16:31
pourquoi tu met $eol="\r\n"; et $eol="\r";
La norme RFC822 impose que les entête de mail se termine exclusivement par \r\n
alienat Messages postés 4 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 23 septembre 2010
28 avril 2011 à 02:23
Pour ceux qui veulent utiliser un Mass Mailer, vous transformez

mail($mail[$i], stripslashes($emailsubject), $body, $headers);

par :

$emails= split("\n", $mail);
for($i=0; $i<count($emails); $i++) {
mail($mail[$i], stripslashes($emailsubject), $body, $headers);
}

Et vous transformez

par <textarea name="mail"></textarea>
alienat Messages postés 4 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 23 septembre 2010
28 avril 2011 à 00:58
<?php
date_default_timezone_set("Europe/Paris");
function envoyermail($mail, $emailsubject, $contenu, $fromname, $frommail, $organisation, $textorhtml, $timezone) {
error_reporting(0);
if (strtoupper(substr(PHP_OS,0,3)=='WIN')) { $eol="\r\n"; }
elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) { $eol="\r"; }
else { $eol="\n"; }
$headers = 'Reply-To: '.stripslashes($fromname).' <'.$frommail.'>'.$eol;
$headers .= 'Return-Path: '.stripslashes($fromname).' <'.$frommail.'>'.$eol;
$headers .= 'From: '.stripslashes($fromname).' <'.$frommail.'>'.$eol;
$headers .= 'Organization: '.$organisation.$eol;
if($textorhtml=="0") { $headers .= 'Content-Type: text/plain'.$eol; }
else { $headers .= "Content-Type: text/html; charset=iso-8859-1".$eol; }
$headers .= "X-Priority: normal".$eol;
$headers .= "X-MSMail-Priority: Normal".$eol;
$headers .= "Importance: High".$eol;
$headers .= "X-Mailer: PHP v" . phpversion().$eol;
$headers .= "MIME-Version: 1.0".$eol;
$headers .= "Delivery-date: ".date("D, j M Y H:i:s ".$timezone).$eol;
$headers .= "X-Originating-IP: [".getenv("REMOTE_ADDR")."]".$eol;
$headers .= "X-Sender-IP: " . $_SERVER["REMOTE_ADDR"].$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol;
$headers .= 'Sender: '.$frommail.$eol;
ob_start();
echo stripslashes($contenu);
$body=ob_get_contents(); ob_end_clean();
ini_set('sendmail_from',$frommail);
mail($mail, stripslashes($emailsubject), $body, $headers);
ini_restore('sendmail_from');
error_reporting(-1);
}
$err=''; $succ="";
if(isset($_POST['envoyer'])) {
$mailto=trim($_POST['mail']);
$verif=$mailto; $t1=explode("@",$verif); $t2=explode(".",$t1[1]); $t3=explode(" ",$verif); $t5=explode(".@",$verif); $t6=explode("@.",$verif);if((sizeof ($t1) 2) && (sizeof ($t2) > 1) && (sizeof ($t3) 1) && (sizeof ($t5) == 1) && (sizeof ($t6) == 1)){
$subject=addslashes(trim($_POST['sujet']));
$contenu=addslashes($_POST['message']);
$nomprenom=addslashes(strtoupper(trim($_POST['nom'])).' '.ucwords(strtolower(trim($_POST['prenom']))));
envoyermail("MON_MAIL@POUR_LA_RECEPTION.FR", $subject, $contenu, $nomprenom, $mailto, "MA SOCIETE", "1", "+0100");
$succ="Envoi réussi !"
}
else { $err='Le format de l\'E-Mail saisie est incorrect'; }
}
?>

<form action="" method="post">
<?php if($err) ?><?php echo $err; ?><?php } ?>
<?php if($succ) ?><?php echo $succ; ?><?php } ?>
Nom, ,
----
PrÉnom, ,
----
E-Mail, ,
----
Sujet, ,
----
Message, <textarea name="message"></textarea>,
----

</form>
masaya Messages postés 4 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 27 avril 2011
27 avril 2011 à 23:32
je cherche une application de site web
Rejoignez-nous