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 :

[Mail] Fonction Mail() inopérante


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Scalp4
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 106
    Points : 62
    Points
    62
    Par défaut [Mail] Fonction Mail() inopérante
    Salut,

    Voici un petit bout de code pour envoyer un mail en PHP :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    //=====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: \"Test\"<test_from@xxxx.fr>\n";
    $header.= "MIME-Version: 1.0\n";
    $header.= "Content-Type: multipart/alternative;\n boundary=\"$boundary\"\n";
    //==========
     
    //=====Création du message
    $message = "\n--".$boundary."\n";
    //=====Ajout du message au format texte
    $message.="Content-Type: text/plain;\n charset=\"ISO-8859-1\"\n";
    $message.="Content-Transfer-Encoding: 8bit\n";
    $message.= $message_txt."\n";
    //==========
    $message.= "\n--".$boundary."\n";
    //=====Ajout du message au format HTML
    $message.="Content-Type: text/html; charset=\"ISO-8859-1\"\n";
    $message.="Content-Transfer-Encoding: 8bit\n";
    $message.= $message_html."\n";
    //==========
    $message.= "\n--".$boundary."--\n";
    $message.= "\n--".$boundary."--\n";
    //==========
     
    //=====Envoi de l'e-mail
    mail("test_to@xxxx.com",$sujet,$message,$header);
    //==========
    ?>
    J'ai uploadé cette page : testmail.php sur un serveur Free pour tester son fonctionnement, et ça marche sans problème, l'adresse "test_to@xxxx.com" reçoit bien l'email (et même pas en tant que spam, si c'est pas beau... ).

    Donc sur le serveur de Free, aucun problème.

    Maintenant, lorsque je met cette même page en interne (dans un réseau "d'entreprise"), ça ne marche pas... Petite précision, la page en question n'est accessible qu'en interne, aucun accès possible depuis l'extérieur.

    Le serveur sur lequel se trouve cette page à évidement accès à internet mais doit passer par un proxy (un autre serveur).

    Le problème vient-il de cet autre serveur ? Faut-il ouvrir des ports spéciaux ? Lorsque je me connecte avec mon ordinateur personnel sur ce réseau, mon client mail fonctionne sans problème, donc sur le serveur proxy, le port SMTP doit être ouvert...

    Autre solution possible, le problème ne viendrait pas du proxy mais du serveur ou j'ai mit ma page "testmail.php", faut-il activer un module php précis ? Car la fonction ne me génère pas d'erreur sur la page, elle est bien présente (quand je ne rentre pas tous les paramètre elle me génère une erreur en me disant que la fonction Mail() ne prend pas/a besoin d'autres arguments).

    Autre soucis, j'ai essayé de regarder dans les logs et je n'ai rien vu qui cloché (mais je n'ai peut-être pas regardé les bon fichiers de logs)...

    Ca vient peut-être d'une conf spéciale des virtual host ? Je ne sais pas, avez-vous des idées ?

    Bref merci d'avance pour votre aide !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    Il faut que la fonction mail soit activée sur ton serveur, ce qui n'est pas toujours le cas.
    Tu n'a aucun message d'erreur qui s'affiche ?
    As-tu testé ta fonction mail ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If( !mail("test_to@xxxx.com",$sujet,$message,$header) )
    {
    echo "Houston on a un problème";
    }

  3. #3
    Membre du Club Avatar de Scalp4
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 106
    Points : 62
    Points
    62
    Par défaut
    Hélas, déjà testé de cette façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $t = mail("test_to@xxxx.com",$sujet,$message,$header);
    echo $t;
    Ce qui m'affichait 1, donc true... Donc la fonction doit bien s'exécuter...

    Je me dit que le problème vient de plus en plus du fait que ça soit en accès interne... Mais comment faire pour passer ce problème...


    Pour ce qui est de l'activation de la fonction mail, si elle ne me génére pas d'erreur c'est qu'elle doit être activé non ? Sinon comment puis-je faire pour vérifier qu'elle est activée ou pas et donc l'activée ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 59
    Points : 36
    Points
    36
    Par défaut
    effectivement, la fonction mail marche bien alors, et ton serveur envoi bien un mail...
    Serait-ce l'anti-spam de ta boite qui filtrerait ? Si tu envois le mail à une adresse extérieure à la boite arrive-t-il ?

    J'ai déjà eu un problème similaire : j'envoyais un mail avec environ 30 adresses en bcc (une association), qu'une seule partie des gens le recevait ! j'ai donc envoyé plusieurs mails avec que 5 bcc et çà a marché. Pouquoi ? je n'en sait rien.

    Bon courage !

  5. #5
    Membre du Club Avatar de Scalp4
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 106
    Points : 62
    Points
    62
    Par défaut
    Le problème est résolu, dans le cas ou quelqu'un aurait le même problème voici comment le résoudre :
    Il fallait configurer le service smtp local (exim4) pour ne pas distribuer les mails qu'en local. A partir de là il a utilisé le relai Nerim. Mais ça ne fonctionnait toujours pas, cette erreur apparaissait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test@gmail.com R=smarthost T=remote_smtp_smarthost defer (-44): SMTP error from remote mail server after RCPT TO:<test@gmail.com>: host smtp.nerim.net [62.4.16.95]: 450 <www-data@nom_de_domaine>: Sender address rejected: Domain not found
    Et pour résoudre ce problème il fallait utiliser la fonction mail comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail("test@gmail.com",$sujet,$message,$header,'-f[fake_mail]@gmail.com');
    Et voilà, ça fonctionne niquel !


    PS : Je n'arrive pas à tagger mon premier message comme "Résolu"...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 19h21
  2. Réponses: 7
    Dernier message: 18/09/2006, 11h38
  3. [Mail] Fonction mail() et le spam
    Par tonios dans le forum Langage
    Réponses: 1
    Dernier message: 12/12/2005, 22h51
  4. [Mail] Fonction mail() et pièce jointe
    Par allyson dans le forum Langage
    Réponses: 16
    Dernier message: 09/11/2005, 15h05
  5. Réponses: 5
    Dernier message: 29/10/2005, 16h44

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