Mail à plusieurs destinataires ne marche pas

Signaler
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010
-
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010
-
Bonjour,

J'aurais besoin de votre aide, j'ai essayé de faire quelque chose mais je n'y arrive pas.
En cochant une case dans un formulaire, je souhaiterais que toutes les personnes renseignées dans une table et ayant une adresse email soit avertie par mail.

J'ai bidouillé ça :
dans la table, le champ s'appelle bien sûr "email"
dans le formulaire :
<td>Avertir ?</td><td></td>


dans le fichier php :
$envoi = $_POST["envoi"];

puis :
	if ($envoi = 'oui') {

$sql = "SELECT * FROM matable WHERE email <> null";
$requete = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while( $result = mysql_fetch_array( $requete ) )
{
$destinataire = "email";
$sujet = "mon sujet";
$message = "mon message";
mail($destinataire,$sujet,$message);
}
}
else header("location: ../formulaire.php");


Je précise que je suis chez free, alors je ne sais pas s'il y a des routines spéciales pour ce genre de fonctions (genre pour éviter le spam)

Auriez-vous une idée pour me dépanner ?


à votre bon coeur !

Cordialement,

16 réponses

Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
Bonjour,
Commence par consulter la documentation qui te donnera aussi des conseils.
J'utilise toujours le 4ème paramètre avec au moins "From: ..." pour indiquer d'où vient le mail.
Là ça ne fonctionne pas car l'adresse du destinataire est mal formée.

thip
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

Bonjour,

Effecivement j'avais mis des guillemets au lieu de quotes.

J'ai corrigé et refait l'essai, je reviens plus tard pour dire si ça marche.

merci
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

Bon ça ne vient pas, j'ai mis deux adresses email dans la table, aucune ne l'a reçue; Revoilà mon bout de code corrigé :

	if ($envoi = 'oui') {

$sql = "SELECT * FROM matable WHERE email <> null";
$requete = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while( $result = mysql_fetch_array( $requete ) )
{
$destinataire = 'email';
$sujet = 'mon sujet';
$message = 'mon message';
$headers = 'From: monemail';
mail($destinataire, $sujet, $message, $headers);
}
}
else header("location: ../formulaire.php");


Est-ce que la syntaxe
$destinataire = 'email';
est corecte ou faut-il initialiser avant une variable $email ?

genre :

$email = $result['email'];


puis :

$destinataire = $email;
??
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
bien sûr : si ton destinataire est "email" , tu te fais jeter, et ta boucle de lecture de la requête ne sert à rien.
je vote pour
$email = $result['email'];

et idem pour les autres champs de la requête.
A nouveau la documentation sur http://www.php.net/manual/fr/function.mysql-fetch-array.php, exemples et conversations, c'est interessant.

thip
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

bon ben je l'ai fait et ça ne marche toujours pas.

Je ne sais plus quoi faire.

Je vais faire un test en mettant les adresses destinataires en dur le temps de voir si c'est un problème de code ou de free.
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
regarde ta table et évite de faire
	$sql = "select * from matable where email <> null";

mais plutôt
	$sql = "select email from matable where email <> null";


ensuite dans ta boucle

		$destinataire = $result['email'];
$sujet = 'mon sujet';
$message = 'mon message';
$headers = 'from: moi@xyz.com';
mail($destinataire, $sujet, $message, $headers);


S'il y a un problème avec free, c'est mail() qui va planter.

vérifie qu'il y a bien des valeurs dans ta table, que tu utilise bien les nom des champs de la table, et que ta requête est correcte en regardant les différentes valeurs de $result["email"]



thip
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

bon j'ai vu déjà une erreur, normalement j'aurais du mettre :
if ($envoi 'oui')
à la place de
if ($envoi 'oui')
.

Mais même avec cela, avec toutes les vérifications et tes propositions, cela ne fonctionne pas.
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
la requête SQL devrait être :

$sql = "select * from matable where email is not null";

quand tu dis que ton programme ne fonctionne pas, tu devrais joindre le message d'erreur (pas trop long).

thip
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

bon je viens d'arriver à envoyer un mail en mettant en dur
where email == 'monmail'

Donc je vais tester ce que tu viens de dire, si ça ne marche pas je pense que c'est un bridage de free de la fonction d'envoi multiples.

merci encore pour tes propositions.
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

edit : j'ai mis where email = 'monmail' et non pas ==
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
en sql il n'y a pas de '==' seulement '='


thip
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

oui c'est ce que j'ai corrigé justement

Sinon donc je viens de refaire le test :

'where email is not null' => ça plante erreur sql sur la ligne 97 qui est justement cette ligne là.
'where email 'monmail'> ça passe tranquille.

faut-il marquer 'where email is not 'null' '?
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

le message précis est :

Warning: mail() [function.mail]: Invalid mail. to = [] in /mnt/126/sdc/9/0/moncomptechezfree/dispo/include/envoi.php on line 97
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

OK c'est bon !

ça passe maintenant en essayant :
"where email != ''"
et bizarrement je reçois en même temps celui de 'where email is not null' alors que tout à l'heure je l'avais pas.

Bon au final ça a l'air de fonctionner, je te remercie grandement !!
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

Re-bonjour,

J'ai à nouveau un souci, qui n'est pas le même que précédemment :

Je permets de rentrer un code html dans un formulaire en affichant la valeur existante dans la base de données.
Le souci bien sûr c'est que le code html est interprété dans le champ, du coup je me retrouve avec un objet java au lieu du code lui-même.

J'ai cherché et essayé les balises xmp ou < et &glt;, et malheureusement ça ne fonctionne pas.

Avez-vous une solution ?

Voici mon code :




sachant que la valeur qui est retournée dans cet exemple est un objet flash de Meebo qui permet de chatter online :
<object width="190" height="275" ></object>


Merci de votre aide.

cordialement
Messages postés
20
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
1 mars 2010

OK j'ai trouvé, en utilisant une balise TEXTAREA ça fonctionne ça force en texte dur.

Désolé ;o)