fonction mail plusieurs destinataires

davidou
Invité n'ayant pas de compte PHPfrance

02 nov. 2009, 09:18

Bonjour,

Avec 1 destinataire, la fonction mail fonctionne, mais dans le cas suivant, elle ne fonctionne plus (aucun message d'erreur) :

<?php

$mailto = '[email protected], [email protected], [email protected]';
$mailfrom = '[email protected]';
$prenom = 'prénom';
$Nom = 'nom';

$ligneobjet = 'Objet';
$lignemessage = 'Message';

/* Message2 */
$message2 = '<html><head><title>Message</title></head><body>'.$lignemessage.'</body></html>';

// Préparation des données à envoyer aux destinataires finaux
// Envoyer un mail HTML, type de contenu d'en-tête.
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

// additional headers
$headers .= "To: ".$mailto." \r\n";
$headers .= "From: ".$prenom." ".$Nom." <".$mailfrom."> \r\n";

// Envoi du courrier
mail($mailto, $ligneobjet, $message2, $headers);

?>

Si vous voyez pourquoi... merci de m'en faire part !

ViPHP
ViPHP | 1136 Messages

02 nov. 2009, 10:42

Salut ,

que te retourne la fonction mail ?

TRUE ou FALSE ?

Sinon, pour les mails , je te conseille fortement , si tu ne veux pas galérer avec les normes ect ... d'utiliser de bibliothèques dédiées à cette effet .

Mon préféré : http://www.phpguru.org/static/mime.mail.html

ou http://pear.php.net/package/Mail

Mais il y en a d'autres ...

Good luck ,
Ch.

davidou
Invité n'ayant pas de compte PHPfrance

02 nov. 2009, 11:44

Merci Christopher de t'être penché sur mon cas...

J'ai modifié la fonction comme suit :

// Envoi du courrier
if(mail($mailto, $ligneobjet, $message2, $headers)){echo 'TRUE';}
else{echo 'FALSE';}

Elle me retourne false !

Je ne connaissais pas cette histoire de norme... Je vais regarder ça de plus près.
Intuitivement, je comprends que tu es en train de me dire que la fonction mail() ne conviendrait peut être pas et qu'il vaudrait peut être mieux employer à la place la fonction mail_queue() (ou une autre) ?

Merci encore...

ViPHP
ViPHP | 1136 Messages

02 nov. 2009, 12:00

Utiliser une librairie , qui te simplifie énormément les choses ...

Pour Rmail , voici un exemple son utilisation ....
http://www.developer.com/lang/php/artic ... ations.htm

Tu n'as plus à te soucier des entêtes à insérer ect ...

Il te suffit juste de renseigner certains points .

Pour revenir à ton problème , si mail() renvoie FALSE , celà veut dire qu'il n'a pas était accepté pour livraison .. reste à savoir pourquoi ..

Pour tes adresses , essayes cette syntaxe :

"Toto <[email protected]>, Titi <[email protected]> \r\n"

davidou
Invité n'ayant pas de compte PHPfrance

02 nov. 2009, 12:55

Là, je suis au taf, et donc je ne peux plus rien essayer !

Pour commencer, j'essaierai ta proposition de syntaxe (Toto <[email protected]>, Titi <[email protected]>)... Je la sens bien... Normalement, il ne devrait pas y avoir de raison pour que la fonction mail() classique ne fonctionne pas...

Si ta proposition de syntaxe n'y fait rien plutôt que de m'entêter et d'y laisser des heures... j'essaierai ta première proposition (chargement d'une librairie)...

Merci, à ce soir !

Petit nouveau ! | 1 Messages

09 nov. 2009, 10:59

Voilà, mon pb est résolu... J'écris donc pour remercier Christopher et puis aussi pour vous communiquer la soluce dès fois que ça puisse servir à d'autres...!!! D'autre part, j'ai pu vérifier que la fonction mail() n'est pas optimisée pour un envoi de mail à des destinataires multiples... D'autres fonctions comme celles conseillées par Christopher sont mieux adaptées... mais là c'est un autre débat !

Pour mon pb, je l'ai résolu de la manière suivante (voir la ligne en gras dans le programme) :

<?php

$mailto = '[email protected], [email protected], [email protected]';
$mailfrom = '[email protected]';
$prenom = 'prénom';
$Nom = 'nom';

$ligneobjet = 'Objet';
$lignemessage = 'Message';

/* Message2 */
$message2 = '<html><head><title>Message</title></head><body>'.$lignemessage.'</body></html>';

// Préparation des données à envoyer aux destinataires finaux
// Envoyer un mail HTML, type de contenu d'en-tête.
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

// additional headers
// $headers .= "To: ".$mailto." \r\n";
$headers .= "From: ".$prenom." ".$Nom." <".$mailfrom."> \r\n";

// Envoi du courrier
mail($mailto, $ligneobjet, $message2, $headers);

?>

ViPHP
ViPHP | 1136 Messages

09 nov. 2009, 11:17

Merci du retour :wink:

Sauf que , ce n'est pas "christopher" mais juste "stopher" :D

Pointilleux moi ? :-p