fonction mail() qui bloque

Petit nouveau ! | 9 Messages

23 mars 2010, 12:03

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

}
?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

23 mars 2010, 23:35

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
Quand tout le reste a échoué, lisez le mode d'emploi...

ViPHP
ViPHP | 5462 Messages

24 mars 2010, 01:08

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.

Mammouth du PHP | 985 Messages

24 mars 2010, 01:30

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...
Modifié en dernier par Dr@ke le 24 mars 2010, 01:40, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

ViPHP
AB
ViPHP | 5818 Messages

24 mars 2010, 01:39

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..."