Envoi mail avec script php vers hotmail

Résolu
Bonjour,

Voila, j'ai un probleme d'envoi de mail par l'intermédiaire d'un script php,assez simple:

$mail="votrenom@votresite.com";  
$sujet="Mon sujet";  
$message="Bonjour \n\n";  
$message.="Ceci est un test.";  
$header="X-Priority:1\n";  
if(mail($mail,$sujet,$message,$header))  
{  
 echo"Mail envoye!!!";  
}  
else  
{  
 echo"Mail non envoye...";  
}  

##j'ai essayé plusieurs scripts, mais ils se ressemblent assez##  



Je sais qu'il y a plusieurs problemes d'envoi de mail vers hotmail (mail envoyé dans courrier indésirable....) mais moi, il n'apparait meme pas et je n'ai aucun message d'erreur, de plus j'ai le meme probleme avec gmail, @free.fr et je n'en ai pas essayé d'autre.
La seule adresse qui marche est celle donné dans la société où je travaille (qui a son propre smtp si je ne me trompe pas : mail.lasociété.com).
J'ai écumé les forums en essayant plusieurs solutions qui ont marché pour d'autres (filtre courrier indésirable, smtp....) mais sans succès.
J'aimerai comprendre pourquoi le mail n'arrive jamais à destination, alors que le script marche pour l'adresse email de la société.

J'espère trouver de l'aide ici.

Merci

7 réponses

Résumé de la discussion

Un script PHP utilisant la fonction mail() échoue à livrer des messages vers des comptes externes comme Gmail, Hotmail ou Free, alors que l'adresse interne de l'entreprise parvient à être acceptée via son SMTP. Plusieurs solutions proposent d'utiliser PHPMailer avec authentification SMTP et configuration du serveur, car la fonction mail() ignore souvent l'authentification et déclenche des erreurs liées au relay lorsqu'un service externe est destiné. Des conseils pratiques soulignent également d'utiliser une approche SMTP avec authentification, vérifier les paramètres du serveur et les droits de relais, car l'erreur 5.7.1 Unable to relay est fréquente lorsque le relais est bloqué.

Bobot (l’IA à votre service)
  1. Bonjour,
    moi j'utilise php-mailer avec l'authentification SMTP est sa marche.
    1. et où actives-tu l'authentification SMTP?
    2. require("phpmailer/class.phpmailer.php");
      $mail = new PHPMailer();
      $mail->IsSMTP(); // telling the class to use SMTP
      $mail->SMTPAuth = true; // turn on SMTP authentication
      $mail->Host = "mail@toto.com"; // SMTP server
      $mail->Username = "mail@toto.com";
      $mail->Password = "mot_de_passe";

      $mail->From = "mail@toto.com";
      //$mail->FromName = "$nom";
      $mail->AddAddress("mail@toto.com");
    3. aprés faut que sa soi bien configurer dans ta class ;)
    4. SMTP Error: Could not authenticate.

      J'ai eu ce message.Je vais jeter un oeil dans la classe.
    5. tu te authentifie avec quel @ ? car si tu le fais avec ta @ hotmail,il y a pas d'authentification smtp ,je crois ...
      il faut que l'authentification sois bien remplis aussi dans ta class :)
  2. Salut,
    essaye de mettre de ca :
         $header .='Content-Type: text/html; charset="iso-8859-1"'."\n";
         $header .='Content-Transfer-Encoding: 8bit';
    
    
    1. Merci pour ta réponse.
      Malheureusement il n'y a aucun changement. Aussi bien avec hotmail que gmail.
    2. dans ton code tu utilises $email et après dans ta fonction mail tu utilises $mail
    3. Erreur de frappe desole. Mais dans mon script avec lequel j'essai g bien 2fois $mail. De toute façon il m'aurait signaler une variable inexistante.
      En fait, je ne pense pas que l'erreur vienne du script puisqu'en choisissant comme destinataire l'adresse mail ( menant à une boite mail Outlook) de la société où je travaille, ça marche niquel.
    4. es tu sur de l'ortographe des adresses mails ?
    5. Oui. J'ai cherché du coté de la config du smtp, dans php.ini , pour l'instant sans grand succès. J'ai téléchargé phpmailer. Je vais voir ce que ça donne.
  3. Lorsque j'essai avec phpmailer, j'ai ce message d'erreur:
    SMTP Error: The following recipients failed: monemail@mondomaine.fr 
    SMTP server error: 5.7.1 Unable to relay 
    

    Ca inspire quelqu'un?
    1. Ca veut dire que ton message n'est pas parti, euh ton adresse mail c'est la bonne la ? ou c'est un exemple ?
  4. Non c'est un exemple, et voila le script que j'utilise et qui me donne l'erreur précédente:
    <?php
    require "phpmailer/rep_phpmailer/class.phpmailer.php";
    	$mail = new PHPmailer();
    	$mail->IsSMTP();
    	$mail->Host='smtp.numericable.fr';
    	$mail->From='monemail@mondomaine.fr ';
    	$mail->AddAddress('*****@hotmail.fr');
    	$mail->AddReplyTo('monemail@mondomaine.fr ');	
    	$mail->Subject='Exemple trouvé sur DVP';
    	$mail->Body='Voici un exemple d\'e-mail au format Texte';
    	if(!$mail->Send()) //Teste le return code de la fonction
    	{ 
    	  echo $mail->ErrorInfo; //Affiche le message d'erreur 
    	}
    	else
    	{	  
    	  echo 'Mail envoyé avec succès';
    	}
    	$mail->SmtpClose();
    	unset($mail);
    ?>
    


    Merci de t'intéresser à mon problème. J'avoue être un peu en galère là.....
    1. Mais malheureusement je connais pas spécialement phpmailer, je l'ai jamais utilisé, j'ai toujours utiliser la fonction mail de php
    2. Pour moi c'est pareil, je viens de découvrir phpmailer aujourd'hui. J'aurais bien fait avec la fonction mail mais rien ne se passe, même pas un message d'erreur. Mais en local, c'est à dire avec l'adresse de la boite où je travaille, ça marche niquel, les 2 scripts. Dès que c'est une adresse externe, pas moyen d'envoyer un mail.
    3. La fonction mail ne fonctionne pas en local a moins de trifouiller.. il me semble
    4. Pourtant le premier script fonctionne avec :
      $mail="nom@nomdelaboite.com";  
      
      D'ailleurs, c'est la seule adresse à laquelle je peux envoyer un mail, donc je pense que ça ne marche qu' en local dans mon cas.
    5. ton script d'envoi de mail est en ligne ?
  5. Je pense que c'est la seule partie utile pour mon problème:
    [mail function]
    ; For Win32 only.
    SMTP = 192.168.***.** //je travaille sur une machine virtuelle ubuntu, sous xp
    smtp_port = 25
    
    ; For Win32 only.
    sendmail_from = me@example.com
    
    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    sendmail_path = /usr/sbin/sendmail -t -i
    
    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =
    
    1. Problème résolu: Voila le script fonctionnel
      <?php  
      error_reporting(E_STRICT);  
      date_default_timezone_set('Europe/Paris');  
      
      require_once "class.phpmailer.php";  
      require_once "class.smtp.php";  
      
      $mail = new PHPMailer();  
      $mail->SetLanguage('fr');  
      $mail->IsSMTP();  
      $mail->SMTPDebug  = false;  
      $mail->SMTPAuth   = true;  
      
      $mail->Host       = "votre smtp (souvant sous cette forme :smtp.****.fr/com)";  
      $mail->Port       = 25;  
      $mail->Username   = "username";  
      $mail->Password   = "password";  
      $mail->From       = "monadresse";  
      
      $mail->FromName   = "monnom";  
      
      //Caractéristiques du message  
      $mail->CharSet     = 'iso-8859-1';  
      $mail->ContentType = 'text/plain';  
      $mail->Encoding    = '8bit';  
      
      $mail->Subject    = "ce que vous voulez";  
      $mail->Body       = "ce que vous voulez";  
      $mail->WordWrap   = 0;  
      
      $mail->AddAddress("adressedestinataire", "nom");  
      
      //$mail->AddCC("adresse_en_copie", "nom"); //pas obligatoire  
      //$mail->AddBCC("adresse_en_bcc", "nom");  //pas obligatoire  
      
      if(!$mail->Send()) echo "PHPMailer Erreur d'envoi : ".$mail->ErrorInfo;  
      else echo " PHPMailer : Le Message a été envoyé !";  
      ?>  
      

      Encore merci à meloo et damienmv.
      1. derient ;) désolé de n'a pas avoir répondu et je suis content que ta résolu le problème.