Page 1 sur 1

fonction mail() qui bloque

Posté : 23 mars 2010, 12:03
par jtitin
Bonjour
je souhaite utiliser ce sript pour envoyer un mail à chaque adresse de ma base de données (une 100 maxi) et cela 1 fois tous les 2 mois.
je suis héberger chez Free et lors de l'exécution du sript une erreur arrive à la ligne:
mail($result['email'], $sujet, $message, $header);
je ne sais pas si c'est Free qui bloque la fonction mail pour l'envoi à plusieurs destinataires
si c'est le cas y a t'il un moyen de contourer cela ou de corriger ce script
merci pour votre aide

<?php

mysql_connect("serveur","login","pass") or die('Connexion impossible');
mysql_select_db("mabase") or die('Connexion impossible');

$sujet = "Sortie foot";

$message = "Salut à tous, vous voulez venir jouer au foot ?";

$auteur_nom = "c'est moi";

$auteur_adr = "[email protected]";

$header = "From: \"".$auteur_nom."\"<".$auteur_adr.">\n";

$sql = "SELECT email FROM amis";

$requete = mysql_query($sql) or die("Erreur");

// on parcourt le tableau associatif contenant les adresses e-mail
while ( $result = mysql_fetch_assoc($requete) ) {

// on envoie le mail à chaque adresse
mail($result['email'], $sujet, $message, $header);

}
?>

Re: fonction mail() qui bloque

Posté : 23 mars 2010, 23:35
par @rthur
Bonjour,
je suis héberger chez Free et lors de l'exécution du sript une erreur arrive à la ligne:
mail($result['email'], $sujet, $message, $header);
Si tu nous donnais le message d'erreur, ça pourrait aider... ;)

Et sinon concernant les limitations d'envoi d'e-mail chez Free, tout est expliqué ici : http://www.free.fr/assistance/946-acces ... -mail.html

Re: fonction mail() qui bloque

Posté : 24 mars 2010, 01:08
par stealth35
et aussi dixit la doc :
Note: Il est important de noter que la fonction mail() n'est pas conseillée pour traiter de gros volumes de mails dans une boucle. Cette fonction ouvre et ferme un socket SMTP pour chaque mail, ce qui n'est pas très efficace.
Pour envoyer de gros volumes de mails, reportez-vous aux paquets » PEAR::Mail et » PEAR::Mail_Queue.

Re: fonction mail() qui bloque

Posté : 24 mars 2010, 01:30
par Dr@ke
Ou en faisant sa propre fonction mail, ou sa propre class mail en utilisant le protocol SMTP.

Exemple:
http://methylbro.titaxium.org/post/2009 ... i-en-masse

Sinon tu devrais regarder ici:
http://php.net/manual/fr/function.mail.php
Regarde les exemples du manuel puis regarde les commentaires.

Et ensuite au lieu d'envoyer le mail, tu fais un echo de chaque variables et tu compares avec la bonne syntaxe conseillée sur la page plus haut... :wink:
(en enlevant la boucle pour le test)

PS:
Sinon à ce que j'ai compris envoyer un nombre important de mails avec la fonction mail() et sans utiliser cron, cela risque d'être problématique...

Re: fonction mail() qui bloque

Posté : 24 mars 2010, 01:39
par AB
Ouais, en même temps peut-on parler d'un gros volume pour un max de 100 mails ? Et puis pour si peu, même si la limite était atteinte on pourrait suggérer de scinder l'envoi en quelques blocs.

Je dis ça parce que même si c'est peu performant ça serait peut-être plus abordable pour jtitin que de se reporter "aux paquets PEAR::Mail et » PEAR::Mail_Queue" :-k

Enfin quoi qu'il en soit pour avancer un peu sur l'origine du pb, si une erreur est repérée elle doit bien être commentée donc comme disait @rthur "Si tu nous donnais le message d'erreur, ça pourrait aider..."