Fonction mail() ne fonctionne pas correctement (free.fr)
Fermé
Elfe007
Messages postés
32
Date d'inscription
dimanche 3 avril 2011
Statut
Membre
Dernière intervention
27 mai 2014
-
3 févr. 2013 à 18:06
sdfsdf - 24 avril 2014 à 00:27
sdfsdf - 24 avril 2014 à 00:27
A voir également:
- Fonction mail php ne fonctionne pas
- Yahoo mail - Accueil - Mail
- Fonction si et - Guide
- Publipostage mail - Accueil - Word
- Mail sos carte - Forum Vos droits sur internet
- Mail delivery system - Forum Réseaux sociaux
20 réponses
Bonjour,
J'ai le même problème avec la fonction mail() qui chez Free fonctionne environ une fois sur 3. J'ai parcouru divers forums sans trouver d'explications convaincantes; chacun y va de son script qui fonctionne. j'en ai essayé plusieurs : oui ils fonctionnent... une fois sur 3 !!
Mon avis : quand un envoi fonctionne une fois et ne fonctionne pas la fois suivante, alors que tout est identique, on peut logiquement en déduire que la différence (car il faut bien que quelque chose ait changé) vient de chez Free (encombrement du serveur ?), et non du script.
Ma solution : Je controle le temps mis pour l'exécution de la fonction mail() : lorsque la fonction n'est pas vraiment exécutée elle met moins d'une milliseconde. (Pourtant elle ne retourne pas de message d'erreur). Quand elle est vraiment exécutée et que le mail est envoyé, elle a mis environ 2,005 secondes.
Donc si le temps d'exécution est inférieur à 2 s, je refais automatiquement une tentative d'envoi après une attente de 2 ou 3 s. Si au bout de 5 tentatives la fonction mail() n'a toujours pas été exécutée, j'interromps la boucle.
J'ai le même problème avec la fonction mail() qui chez Free fonctionne environ une fois sur 3. J'ai parcouru divers forums sans trouver d'explications convaincantes; chacun y va de son script qui fonctionne. j'en ai essayé plusieurs : oui ils fonctionnent... une fois sur 3 !!
Mon avis : quand un envoi fonctionne une fois et ne fonctionne pas la fois suivante, alors que tout est identique, on peut logiquement en déduire que la différence (car il faut bien que quelque chose ait changé) vient de chez Free (encombrement du serveur ?), et non du script.
Ma solution : Je controle le temps mis pour l'exécution de la fonction mail() : lorsque la fonction n'est pas vraiment exécutée elle met moins d'une milliseconde. (Pourtant elle ne retourne pas de message d'erreur). Quand elle est vraiment exécutée et que le mail est envoyé, elle a mis environ 2,005 secondes.
Donc si le temps d'exécution est inférieur à 2 s, je refais automatiquement une tentative d'envoi après une attente de 2 ou 3 s. Si au bout de 5 tentatives la fonction mail() n'a toujours pas été exécutée, j'interromps la boucle.
14 mai 2013 à 21:01
Si oui, pourrais-tu nous dire comment tu fais (je ne maîtrise pas les durées) ?
14 mai 2013 à 21:34
$total = 0;
while($total < 1.5) {
$start = date_getMicroTime();
for($i = 0 ; $i < 999999 ; $i++) 1; // Temps de pause entre chaque tentative, car sleep() n'est pas dispo sur Free.fr
mail_contact($name, $email, $subject, $message); // Vrai fonction qui envoi le mail
$total = round(date_getMicroTime() - $start, 3);
}
Et la fonction:
function date_getMicroTime() {
list($usec, $sec) = explode(' ', microtime());
return ((float) $usec + (float) $sec);
}
En espérant que ça vous dépannera.