fonction mail() ne fonctionne pas

fonction mail() ne fonctionne pas - PHP - Programmation

Marsh Posté le 09-06-2012 à 13:55:25    

Bonjour,
 
J'ai créée une page d'envoi de mail (qui est appelé par un formulaire).
Voici la code :
 
<?php
ini_set('SMTP', 'nom_serveur_smtp');
$mail = 'mail_de_test@free.fr'; // Déclaration de l'adresse de destination.
$passage_ligne = "\n";
 
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Salut à tous, voici un e-mail envoyé par un script PHP.";
$message_html = "<html><head></head><body><b>Salut à tous</b>, voici un e-mail envoyé par un <i>script PHP</i>.</body></html>";
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey mon ami!";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"Came\"<monmail@xxxx.com>".$passage_ligne;
$header.= "Reply-to: \"Seb\" <monmail@xxxx.com>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
?>
 
Problème :
- lorsque j'exécute cette page en local avec le SMTP de Free (ini_set('SMTP', 'smtp.free.fr')) -> ça fonctionne
- lorsque j'exécute cette page hébergé sur mon FTP Free avec le SMTP de free (ini_set('SMTP', 'smtp.free.fr')) -> ça fonctionne
- lorsque j'exécute cette page hébergé sur mon FTP Free avec un autre SMTP (ini_set('SMTP', 'smtp.xxx.fr')) -> ça fonctionne
MAIS  
- lorsque j'exécute cette page hébergé sur mon FTP OVH avec le SMTP de free (ini_set('SMTP', 'smtp.free.fr')) -> ça ne fonctionne pas (mail non reçu)
- lorsque j'exécute cette page en local avec un autre SMTP (ini_set('SMTP', 'smtp.xxx.fr')) -> ça ne fonctionne pas (Failed to connect to mailserver at "nom_serveur_smtp" port 25, verify your "SMTP"
 
(Note: si c'est un facteur qui peut jouer, mon FAI : Free)
 
et je ne comprend vraiment pas pourquoi ...
Quelqu'un a-t-il déjà rencontré ce genre de problème ?


Message édité par sebastien4444 le 09-06-2012 à 14:11:23
Reply

Marsh Posté le 09-06-2012 à 13:55:25   

Reply

Marsh Posté le 09-06-2012 à 22:56:31    

Il me semble qu'OVH vérifie qu'aucun script php ne se sert de la fonction mail() pour spammer ou faire des trucs pas nets. Il faut donc passer par leur serveur de mail.
 
Pour Free, je pense que tu pourrais passer par un autre smtp simplement, si tu mets le smtp d'un autre FAI, c'est lui qui ne va pas vouloir que tu passes par lui alors que tu es chez Free et que donc tu dois passer par lui. Mais je suis sûr que si tu as un ami qui a son propre serveur de mail et que dans ton script, tu mets son smtp, ça marchera...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed