[mail php] recoit en double ou triple !

Résolu/Fermé
Edouard - 7 juin 2007 à 16:50
 Utilisateur anonyme - 23 nov. 2009 à 10:00
Salut,

Je 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é";
?>
A voir également:

29 réponses

UP svp
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
7 juin 2007 à 17:23
Est ce que c'est le seul contenu de cette page ?
Si non, est ce que ca ne viendrait pas d'une boucle de test en amont qui serait erronée et qui tournerait plusieurs fois en envoyant le mail a chaque fois a cause d'une condition non vérifiée ? (hmmm... si je suis clair)
0
Très clair,
c'est le seul contenu que j'ai volontairement isolé afin de me familiariser, les boucles seront construites ensuite et je réinjecterai se code le moment venu.
Il y a une erreur de copié collé à la ligne $entete = ... qui n'est pas dans le vrai code. je peux plus éditer alors je re poste le code :

<?php
$file="contenu.html";
$contenu = fread(fopen($file, "r"), filesize($file));
$email = "info@domaine.fr";
$titre = "TITRE";
$entete = "Content-type:text/html;From : from@domaine.fr;Reply-To:trash@phpteam.net";
mail($email, $titre, $contenu, $entete);
echo "email envoyé";
?>
0
Avec ce code là le mail arrive en double STRICTEMENT IDENTIQUE :

<?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);
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
7 juin 2007 à 17:54
salut,

et il a que ça comme code dynamique sur la page ?
pas de refresh() en js ou dans le header ou quelque chose du genre ?

<edit>
et tu lances le script comment ? par un lien ? il y aurait pas doublon entre 'href' et 'onClick' ?
ou alors t'aurais pas bu trop de café ?
clic frénétique… lol !
-;o)
</edit>
0
Salut,
A terme je compte bien sûr fonctionner avec un formulaire et tout, mais là je voulais juste faire un test alors c'est tout ce qu'il y a dans la page, sans JS, sans submit, nada...

je fais F5 et ça envoi !

voilà 'tout' le code :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME="Generator" CONTENT="TextPad 4.6">
<META NAME="Author" CONTENT="?">
<META NAME="Keywords" CONTENT="?">
<META NAME="Description" CONTENT="?">
</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?">
<?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>

Attention c'est du lourd. lol.

Est-ce que ça peut venir du fait que j'ai posé cette page de test sur free.fr ?
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
7 juin 2007 à 18:15
euh... jedirais que je rencontre aussi des problemes avec mon envoi de messages depuis free (voir ici : php fonction mail n envoie pas toujours)

tu devrais peut être tester sur un autre serveur, au cas ou... je vais faire de meme d'ailleurs.

mais je serais étonné que ca vienne uniquement de là.

lol.. je viens de tester ton script sur free : résultat : 4 mails envoyés :D
0
UP svp
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
7 juin 2007 à 18:29
je pense que c'est la DTD.
j'ai testé ton code --> 2 mails.
avec le suivant un seul…
<!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 = "xxx@hotmail.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> 
0
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
0
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
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
7 juin 2007 à 23:57
Re,

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 !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 juin 2007 à 00:05
je 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 !
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
8 juin 2007 à 00:08
mais 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!
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 juin 2007 à 00:18
je 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 ?
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 329
8 juin 2007 à 00:23
moi 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...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 juin 2007 à 00:30
peut être une explication , mais ce serait capilotracté…
0
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.
0
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...).
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 juin 2007 à 12:31
ben 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.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 juin 2007 à 12:43
pour 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 !
0