[mail php] recoit en double ou triple !

Résolu
Edouard -  
 Utilisateur anonyme -
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

Edouard
 
UP svp
0
gryzzly Messages postés 4608 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
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
Edouard
 
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
Edouard
 
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   Statut Contributeur Dernière intervention   923
 
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
Edouard
 
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   Statut Contributeur Dernière intervention   1 335
 
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
Edouard
 
UP svp
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   923
 
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
Edouard
 
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
Edouard
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Contributeur Dernière intervention   923
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Contributeur Dernière intervention   923
 
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   Statut Contributeur Dernière intervention   1 335
 
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   Statut Contributeur Dernière intervention   923
 
peut être une explication , mais ce serait capilotracté…
0
Edouard
 
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
Edouard
 
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   Statut Contributeur Dernière intervention   923
 
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   Statut Contributeur Dernière intervention   923
 
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