IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction Mail() de PHP - Renvoi toujours false


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Fonction Mail() de PHP - Renvoi toujours false
    Bonjour,

    Eh oui je pense que de façon récurrente, des gens ont des difficultés avec la fonction mail() de php. Après avoir fait beaucoup de recherche et regardé/lu des tutos, je n'arrive toujours pas en envoyé de mail. Il faut dire que l'ensemble de ces tutos sont des "copie ça... tu cliques... sa marche" mais n'explique rien de la configuration de base du serveur ou autre.

    Je suis tombé sur le FAQ de ce site sur ce sujet mais malheureusement il ne m'a toujours pas permis d'envoyer des emails. Je ne sais pas d'où vient mon problème du coup, j'espère que vous pourrez m'aider à savoir où chercher.
    Ma configuration est :

    Serveur
    apache 2 / php 5 distant (vps)

    PHP.ini
         ; http://php.net/phar.require-hash
         ;phar.require_hash = On
    
         ;phar.cache_list =
    
         [mail function]
         ; For Win32 only.
         ; http://php.net/smtp
         ; (c'est un essai de ma part mais pas concluant)
         SMTP = gmail.smtp.com 
         ; http://php.net/smtp-port
         smtp_port = 25
    
         ; For Win32 only.
         ; http://php.net/sendmail-from
         ;sendmail_from = me@example.com
    
         ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
         ; http://php.net/sendmail-path
         ;sendmail_path =
    
         ; 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().
         ;mail.force_extra_parameters =
    
         ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
         mail.add_x_header = On
    
         ; The path to a log file that will log all mail() calls. Log entries include
         ; the full path of the script, line number, To address and headers.
         ;mail.log =
         ; Log mail to syslog (Event Log on Windows).
         ;mail.log = syslog
    
         [SQL]
         ; http://php.net/sql.safe-mode
         sql.safe_mode = Off
    Mon code php (celui du FAQ)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $destinataire = 'arkentus@gmail.com'; //(Oui j'ai mis le miens en vrais ^^)
     
    $expediteur = 'adresse@fai.com';
    $objet = 'Test'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Content-type: text/html; charset=ISO-8859-1'."\n"; // l'en-tete Content-type pour le format HTML
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
    $message = '<div style="width: 100%; text-align: center; font-weight: bold">Un Bonjour de Developpez.com !</div>';
    if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
    {
        echo 'Votre message a bien été envoyé ';
    }
    else // Non envoyé
    {
        echo "Votre message n'a pas pu être envoyé";
    }
    Je reçois la réponse
    Votre message n'a pas pu être envoyé
    . Je ne sais pas réellement quoi cherche ni où, alors merci d'avance de votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les seules choses a renseigner sont le serveur SMTP et le port.
    Le serveur SMTP de gmail est smtp.gmail.com et pas gmail.smtp.com et il utilise le port 465.
    https://support.google.com/a/answer/176600?hl=fr
    Malheureusement il exige une authentification, ce qui n'est pas faisable avec la fonction mail().

    Tu peux utiliser une classe plus évoluée comme PHPMailer ou utiliser le serveur SMTP de ton fournisseur d'accès.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Tu peux utiliser une classe plus évoluée comme PHPMailer ou utiliser le serveur SMTP de ton fournisseur d'accès.
    Je veux bien tester PHPMailer ou tout autre classe mais j'aimerai bien que ça envoi un mail histoire que je voie que ça marche avant de me lancer dans un truc plus gros. Mais je vais tester PHPMailer pour voir.

    Le fournisseur d'accès je le connait pas réellement vu que le serveur est un serveur OVH à Strasbourg....

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Alors, j'ai tenté PHPMailer

    J'ai ajouter un peu de code autour de ma fonction pour try_catch les erreurs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    require_once('phpmailer/class.phpmailer.php');
    $mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
     
    try {
      $mail->AddReplyTo('name@yourdomain.com', 'First Last');
      $mail->AddAddress('riviello.a@gmail.com', 'John Doe');
      $mail->SetFrom('name@yourdomain.com', 'First Last');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->Body = '<p><b>E-Mail</b> au format <i>HTML</i>.</p>';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
      $mail->Send();
      echo "Message Sent OK\n";
    } catch (phpmailerException $e) {
      echo 'phpmailer'.$e->errorMessage();
    } catch (Exception $e) {
      echo 'autre'.$e->getMessage();
    }
    Il me renvoi (Donc erreur de PHPMail et non de PHP tout court -> ligne 14/15) : Could not instantiate mail function.

    C'est à dire que la fonction mail() n'existe pas ?

    J'ai aussi essayé d'ajouter un smtp, mais je pense pas que ça viennent de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $mail->IsSMTP();
    	$mail->Host = "smtp.gmail.com";
    	$mail->SMTPAuth = true;
    	$mail->Port = 465;
    	$mail->Username = "r*******@gmail.com";
    	$mail->Password = "******";

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    OVH doit te fournir un serveur SMTP non ?

    Quand tu mets le SMTP tu obtiens quoi comme erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    J'ai trouvé ça comme info chez OVH...

    SMTP: ns0.ovh.net:587
    il faut activer SMTP AUTH dans le SMTP avec le login/mot de passe du compte email
    ceci evite les erreurs:
    553 sorry, that domain isn't allowed to be relayed thru this MTA
    POP3: ns0.ovh.net:110
    IMAP4: ns0.ovh.net:143

    Mais ça me retourne toujours la même erreur.

    Je dois avouer que je suis largué où un peu fatigué. Sur un serveur exchange 2012, on met qu'il se demerde pour l'envoi et ciao bonne nuit. Et là un simple mail() me prend une après midi...

    je crois que je comprend même plus ce que je cherche là xD ... pour ce smtp on me demande le login/mot de passe du compte email.. mais j'ai pas de compte email chez eux moi !


    Modif:

    je lis des faq, des guides et des informations.. Mais c'est des trucs genre "Comment gérer votre serveur mail" / "administration de vos Pop Mail" / etc.. Je veux juste que mon formulaire de contact balance un mail, pas m'occuper de la gestion de la moitié du kurdistant !

    Si c'est pas faisable, je fait un mailto et le pc de l'utilisateur se débrouille.. et du coup je regarde comment je pourrais faire.. et les mec repondent "Mais nan .. regarde tu fais 2 fichiers vite fait... mail(balbalbalbla) .. et hop c'est réglé"

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le "truc" c'est qu'actuellement tu ne sais pas avec quel serveur tu veux envoyer tes mails, donc ça serait un serveur exchange 2012, ça serait pareil.

    Quand tu mets le SMTP tu obtiens quoi comme erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    J'ai toujours la même -> "Could not instantiate mail function."

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    On va commencer par simple. Il tourne sous quoi ton vps ? A mon avis du linux

    Donc comme tu t'en est rendu compte, ca sert pas à grand chose de configurer le smtp dans php.ini ( win32 only comme ils disent ).

    De là soit tu configure sendmail_path et tu pourra utiliser mail(), à condition que que sendmail fonctionne

    Soit tu passe par un smtp externe, ce que permet phpmailer. Un exemple fonctionnel avec Gmail https://github.com/PHPMailer/PHPMail...les/gmail.phps tu remarquera le SMTPDebug et SMTPSecure.

    je lis des faq, des guides et des informations.. Mais c'est des trucs genre "Comment gérer votre serveur mail" / "administration de vos Pop Mail" / etc.. Je veux juste que mon formulaire de contact balance un mail, pas m'occuper de la gestion de la moitié du kurdistant !
    C'est la joie d'administrer un serveur

Discussions similaires

  1. Fonction mail en php et Serveur de mail
    Par Rudya dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 26/04/2007, 12h11
  2. [Mail] Fonction mail en PHP
    Par rte304 dans le forum Langage
    Réponses: 1
    Dernier message: 11/04/2007, 22h02
  3. [Mail] probleme avec la fonction mail de php
    Par fdavid dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2006, 15h48
  4. [Mail] Fonction mail () de php
    Par goma771 dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 21h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo