[mail php] recoit en double ou triple !
RésoluJe veux faire un petit script qui envoie une newsletter en html en récupérant le contenu d'une page html déjà sur le site (accessible comme cela avec un lien du type : si vous n'arrivez pas à lire cliquez ici).
Je passe l'algoritme qui sera derrière (BDD...)
Le code est basique, et fonctionne mais je reçois 2-3 emails à chaque fois !
Code :
<?php
$file="contenu.html";
$contenu = fread(fopen($file, "r"), filesize($file));
$email = "info@domaine.fr";
$titre = "TITRE";
$entete = $entete ="Content-type:text/html;From : from@domaine.fr;Reply-To:trash@phpteam.net";
mail($email, $titre, $contenu, $entete);
echo "email envoyé";
?>
Configuration: Windows XP Internet Explorer 6.0
29 réponses
Script PHP simple destiné à envoyer une newsletter en HTML récupère le contenu d'une page existante et génère des doublons d'emails lors de l'envoi répétés. Des échanges montrent que les doublons dépendent du DTD ou du doctype, et des tests entre navigateurs donnent des résultats variables, alors que Free et d'autres hébergeurs compliquent l'envoi. Plusieurs réponses évoquent l'impact du code PHP, notamment l'utilisation de fread et fopen pour charger contenu HTML et l'envoi avec mail(), mais les résultats restent sensibles au format HTML et au contexte d'hébergement. En cas de solution, certains suggèrent d'expérimenter avec XHTML 1.0 Strict plutôt que HTML 3.2 Final et d'éviter les envois HTML multiples selon les adresses, afin d'améliorer la transportabilité.
-
Comment enlever la copie recue en double à chaque mail svpi
-
j'avais egalement le meme pb avec la fonction mail ()
je recevai 2 mail a chaque fois sur un serv dedié apparement mon pb etait que je mettais le retour de la fonction dans une variable comme il se doit mais bon ??
ex : $envoiOK=mail(xxxxxx);
j'ai supprimé ma variable de retour et ca a marché
donc j'appelle simplement mail(xxxxx);
je sais que ce n'est pas le meme pb pour vous mais si d'autres personnes lisent ce post ca poura peut etre les aider -
Voici la solution (un peu tard mais bon...)
http://lists.evolt.org/archive/Week-of-Mon-20030714/144979.html
en faite, le faite de mettre un to dans le header et de remettre l'adresse mail dans la fonction mail envoye aux 2 adresses !-
Désolé totolarigolade,
Mais c'est officiel, c'est un bug de l'espace !
Sérieux, regarde mes posts, je n'ai pas de TO dans les headers, donc ça ne vient pas de là.
Merci quand même.
Edouard
________________________________
"si l'informatique c'était binaire (ça marche ou ça marche pas) ça se saurait depuis longtemps...
-
-
C'est maintenant revenu à la normale...sans rien changer. Encore un truc à se rendre dingue.
-
Malheuresement j'ai tout essayé, et moi c'est pour envoyer un message unique seulement.
- Même sans headers "mail($to,$sujet,$message)" ou avec un header simple rien n'y fait.
- La DTD est en strict depuis le début mais cela n'a aucun rapport ;)
- L'envoi de mail via la fonction unix "mail" fonctionne donc cela ne vient pas du smtp
Par contre je ne rencontre le problème qu'avec php5, avec le 4 tout fonctionne bien, je vais donc creuser cette piste. -
Salut,
Moi ça c'est calmé, mais vérifie bien les headers( $from ; $to...) et la DTD.
Edouard -
AAARGGGHH c'est quoi ce délire encore ??!!
Après orange qui s'amuse à passer son smtp sur 587 sans prévenir personne voila le php qui déraille...
Je suis hebergé chez ovh avec smtp perso et j'ai le même problème de mail en triple. -
bonjour, j'ai eu un pb similaire, je ne sais pas si le votre est le meme:
mail($To, $sujet, $message, $headers)
le mail etait toujours envoyé en double.
en ce qui me concerne, la solution était simple:
dans mon $headers j'avais les entetes classique "from: to: ..."
et donc dans mon entete "to:.." j'avais l'adresse répété de ma variable $To. en supprimant de $headers la ligne avec "To:.." je ne recoit desormais plus qu'un mail, donc tout va bien.
a+ -
Même problème chez Nuxit mél envoyé en double, triple et qqfois plus ...
Je suis preneur de toutes bonne nouvelles sur la question !
Fred-
Salut,
Pour ma part, j'ai pas de réponse. Free s'est calmé tout seul...
Le script a été utilisé depuis sur des sites hébergés chez OVH et Lycos. Aucun soucis.
Plutôt inquiétant comme truc. Surtout que si ça se remet à déconner je risque d'avoir qelques clients au bout du fil...
Pour ma part je pense que ni la dtd ni le navigateur ne puisse être en cause, dans la mesure où c'est le php qui envoie l'email, que le problème apparait quelque soit le script en amont...
Je crois que ça vient du serveur de mail de nos hébergeur et qu'on ne peut rien y faire.
A+ Edouard
-
-
Contributeurpour les navigateurs ils réagissent tous pareils (Opera 9, FF 2, IE 6 & 7).
ça aurait trop facile.
mais j'ai quand même reçu un mail en triple au lieu du double mais je ne sais pas avec lequel, ai tout fait à suivre.
j'abandonne ! -
Contributeurben ce qui m'a fait changer de DTD c'est en voyant 3.2. la spec a 10 ans et j'avais jamais vu de Final. du coup je me suis dit que les navigateurs faisait peut être n'importe quoi avec. d'ailleurs vous avez testé avec quel navigateur ? perso FF 2, vais faire le test avec Opera et les IE. (je ne peux plus revenir à la ligne ça me gonfle...). pour l'étude je l'ai fait c'est navrant.
-
Salut,
Pour mon histoire de doublon ça semble s'etre calmé avec le dernier code de Mathieu (DTD).
Mais j'avoue que ça me semble très suspect, puisqu'en l'occurence c'est sensé gérer le html (je me suis jamais vraiment posé la question de à quoi ça servait, donc sûrement que je dis une grosse connerie) alors que l'envoi est fait par php ?
Si on utilisait mailto à la rigueur je comprendrais.
Bref, sais pas quoi vous dire.
A si, sinon je crois que pour les résultats de 'l'étude' c'est mort, je l'ai vexé avec mon post. Ce matin j'ai reçu un mail qui sentait encore les larmes sechées : du Alizé tout craché, c'est pas ma faute, suis juste un pauvre étudiant sans budget (là j'ai pas bien compris le lien faut dire...). -
Contributeurpeut être une explication là, mais ce serait capilotracté…
-
Je viens d'aller regarder, comme tu dis c'est assez space comme explication, mais c'est le propre des support technique de trouver des explications pour dire que c'est pas de leur faute... ils ont tous du faire une fac de psycho chez Alice ! lol... spéciale dédicace à l'esthéticienne...
Bref, vu la longueur de mon script, il met maxi deux secondes à s'exécuter, donc leur truc ça tiens pas trop la route.
Sinon, je voudrai récupérer le title (meta tag) de la page contenu.html (dans la variable $contenu) pour le mettre automatiquement dans la variable $titre.
j'ai vu gTitle quelque part mais je trouve pas d'explication clean.
-
-
Contributeurmoi je suis en http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd et le probleme, c'est que free ne veut pas envoyer deux mails formatés html a deux adresses différentes (enfin ca marche pour deux adresses gmail, mais si y'a une gmail et une free/wanadoo, la free/wanadoo ne recoit rien !
lol
faudra je teste d'envoyer texte/html peut etre , mais faut que je trouve un exemple quelque part sur le web... -
Contributeurje viens de refaire le test. html 3.2 Final (d'ailleurs c'est bizarre ce Final, non ?) = 2 mails alors que xhtml 1.0 Strict = 1 mail.
tu as quoi comme DTD ? et tu reçois toujours le même nombre de doublon ou c'est variable ?
-
Contributeurmais avec des pbm pareils... comment assurer la transportabilité des scripts selons les hébergeurs ?? dans mon cas par exple, j'ai bien l'intention de faire qqch de propre fonctionnel partout... et ca buggue dans tous les sens ! c'est chiant!
-
Contributeurje l'ai testé chez easy-hebergement et il envoyait en double…
donc ça ne viens pas que de free.
j'ai modifié le DTD et plus de doublon.
ça va finir en roman de SF c't'histoire !
-
ContributeurRe,
je fais remonter l'info. j'ai testé sur un autre serveur que free.fr (en l'occurence freezee.org), mes mails sont bien envoyés... donc free fait je ne sait quoi, je ne sais pourquoi, je ne sais comment, je ne sais quand... (a croire que je suis ignare :D)
je serais toi, je considèrerais ton script ocmme fonctionnel et d ele tester des que possible ailleurs ! -
Il semblerait que free s'est calmé...
du moins avec ce code ça marche :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Titre</title>
</head>
<body>
<?php
$file="contenu.html";
$contenu = fread(fopen($file, "r"), filesize($file));
$email = "info@promete.fr";
$titre = "TITRE";
$entetes = "Content-type:text/html \n";
$entetes .= "From: test@domaine.fr \n";
//$entetes .= "Reply-to: super@test.fr ";
//$entetes .= "Cc: secretaire@urssaf.frCet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir \n";
//$entetes .= "Bcc: contentieux@urssaf.frCet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir \n";
mail($email, $titre, $contenu, $entetes);
?>
</body>
</html>
j'ai juste enlevé les simples quote autour de fread par rapport à Dalida -
Désolé pour le doctype, mais ça change rien...
sauf qu'un des trois mail contient :
fread(fopen($file, "r"), filesize($file))
sinon les deux autres sont en html
- 1
- 2