FONCTION ENVOI DE MAIL PHP QUI PERMET DE PASSER LE FILTRE ANTI SPAM
masaya
Messages postés4Date d'inscriptionmercredi 27 avril 2011StatutMembreDernière intervention27 avril 2011
-
27 avril 2011 à 23:32
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 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.
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 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.
kaunis
Messages postés1Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention12 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és54Date d'inscriptiondimanche 20 décembre 2009StatutMembreDerniè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és26Date d'inscriptionvendredi 20 novembre 2009StatutMembreDerniè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és31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 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
- 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
McGyver59
Messages postés26Date d'inscriptionvendredi 20 novembre 2009StatutMembreDerniè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és5Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention28 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és25Date d'inscriptionsamedi 4 septembre 2004StatutMembreDernière intervention27 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és4Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention23 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és15Date d'inscriptionsamedi 20 janvier 2007StatutMembreDerniè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és31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 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és4Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention23 septembre 2010 28 avril 2011 à 02:23
Pour ceux qui veulent utiliser un Mass Mailer, vous transformez
21 mai 2011 à 19:42
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
12 mai 2011 à 11:56
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
11 mai 2011 à 12:52
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
10 mai 2011 à 20:28
10 mai 2011 à 19:43
- 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.
10 mai 2011 à 16:47
2 mai 2011 à 10:39
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.
2 mai 2011 à 07:52
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.
29 avril 2011 à 00:37
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...
28 avril 2011 à 17:20
Ça a l'air super, dommage du peut de commentaire...
Cdt
Antoine
28 avril 2011 à 16:31
La norme RFC822 impose que les entête de mail se termine exclusivement par \r\n
28 avril 2011 à 02:23
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>
28 avril 2011 à 00:58
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>
27 avril 2011 à 23:32