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] utilisation MAIL de PHP


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut [Mail] utilisation MAIL de PHP
    Bonjour,
    La fonction MAIL permet d'nvoyer un message.
    Quel paramètre doit-t-on envoyer pour recevoir un messaeg dans le cas où le message n'a pu être distribué (adresse fause par exemple)
    Merci pour l'aide

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    Comme déjà dit et redis, une adresse invalide concerne le protocole d'envoie de Mail (protocole SMTP) quand ce protocole entre en jeu pour la distribution effective du mail, la fonction a fini de s'exécuter depuis longtemps... il faut simplement indiquer une adresse de départ du mail qui soit valide, le mesage d'erreur sera envoyé à cette adresse
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut ben en fait
    hello comme dit ci-dessus ce que tu demande est impossible pour cette fonction en fait tu dois faire le controle avant d'envoyer tes mails.

    pour le controle voici.

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    <?
    /*
    ===============================================================================
    ==                                                                           ==
    ==                                                                           ==
    ==  Fonction permettant de verifier une adresse mail.                        ==
    ==  Cette fonction va verifier l'adresse mail fournie en argument            ==
    ==  de plusieurs manières. Premièrement a l'aide d'expressions régulière     ==
    ==  afin de vérifier la syntaxe de celle-ci.                                 ==
    ==  ensuite une verification mx afin de verifier le domaine                  ==
    ==  et puis une connection sur le serveur afin de valider l'user             ==
    ==                                                                           ==
    ==  function verif_email($email,$debug)                                      ==
    ==                                                                           ==
    ==  $email adresse à verifier.                                               ==
    ==  $debug information de deboguage.                                         ==
    ==                                                                           ==
    ==                                                                           ==
    ===============================================================================
    */
     
    function verif_email($email,$debug=false)
             {
             global $HTTP_HOST;
             $Return= array();
             /*
             Tableau pour contenir les info que la fct renvoie.
             $return['0'] = true/false état.
             $return['1'] = message.
    
    
             Nous sommes au commencement de nos test ici nous allons validé la syntaxe
             utilisé dans la variable $email.
             fonction utilisé eregi();
             */
     
             if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email))
                {
                 /*
                   Pour plus d'information sur la fonction eregi() veuillez voir : l'excellente page
                 */
                  $Return[0]=false;
                  $Return[1]="${email} cet E-Mail n'as pas la bonne syntaxe.";
                  if ($debug) echo "Erreur : ${email} cet E-Mail n'as pas la bonne syntaxe.<br>";
                  return $Return;
                }//fin if regexp.
     
             else if($debug) echo "Confirmation : ${email} cet E-Mail n'as pas la bonne syntaxe.<br>";
     
             /*
             Notre première étape franchie avec succès, nous devons maintenant verifier l'existance
             d'un serveur a cette adresse.
             pour ce faire nous allons prendre la variable $email, et la diviser en ces deux composante.
             d'une part l'utilisateur et d'autre part le domaines une adresse mail ayant la forme
             <a href="mailto:utilisateur@domaine.com">utilisateur@domaine.com</a>.
             nous allons créer deux variables pour contenir cela
             $util utilisateur
             $domaine le domaine.
             
             voyons cela en action.
             */
             list ( $util, $domaine ) = split ("@",$email);
     
             /*
             maintenant on check l'existance du domaine.
             1) checkdnsrr 
             */
             if ( checkdnsrr ( $domaine, "MX" ) )  {
              if($debug) echo "Confirmation : MX record du  {$domaine} existe.<br>";
              /*
               nous sauvons l'adress du mx record pour testerl'existence de serveur mail sur le domaine.
               1) getmxrr: 
              */
               if ( getmxrr ($domaine, $mxHote))
                {
                 if($debug)
                 {
                    echo "Confirmation : MX record du  {$domaine} confirmer par MX LOOKUP.<br>";
                  for ( $i = 0,$j = 1; $i < count ( $mxHote ); $i++,$j++ )
                  {
                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result($j) - $mxHote[$i]<BR>";
                  } // fin for
                 } //fin if debug
                } //fin if getmxrr
              /*
                la fonction getmxrr a stocké les information concernant les mx records dans le tableau $mxHote
                nous allons employé l'une de ces valeurs pour notre connection.
              */
              $cible= $mxHote[0];
     
              }//fin if checkdnsrr
             else {
            // si il n'y a pas de  MX record simplement prendre le $domaine comme adresse pour la connection socket .
            $cible = $domaine;
            if ($debug) echo "Confirmation : MX record du {$domaine} n'existe pas.<br>";
                  } //fin else checkdnsrr.
     
            /*
             nous sommes a la dernière étape a ce stade nous savons que l'adresse à une syntaxe valide et nous savons si le serveur mail
             est renseigné. nous allons donc ouvrir une session sur l'hote $mxHote et si nous obtenons une réponse valide allons checker
             l'utilisateur.
             1) fsockopen: 
            */
            $connection= fsockopen ($cible,25);
     
            if ($connection)
              {
                if ($debug) echo "Connection réussie sur  {$cible} SMTP.<br>";
                /*
                  la connection est réussie sur le serveur smtp.
                  nous devons donc normalement recevoir une reponse contenant le code 220
                  plus d'information sur le protocol smtp: 
                  1) fgets: 
                */
                if ( ereg ( "^220", $Out = fgets ( $Connect, 1024 ) ) ) {
     
                // nous saluons le serveur smtp.
                fputs ( $connection, "HELO $HTTP_HOSTrn" );
                    if ($debug) echo "en cours : HELO $HTTP_HOST<br>";
                $Out = fgets ( $connection, 1024 ); // reception reponse serveur.
     
                // envois de l'adresse de l'envoyeur au serveur.
                fputs ( $connection, "MAIL FROM: <{$email}>rn" );
                    if ($debug) echo "en cours : MAIL FROM: &lt;{$email}&gt;<br>";
                $From = fgets ( $connection, 1024 ); // reception reponse serveur.
     
                // envois de l'adresse cible.
                fputs ( $connection, "RCPT TO: <{$email}>rn" );
                    if ($debug) echo "en cours : RCPT TO: &lt;{$email}&gt;<br>";
                $To = fgets ( $Connect, 1024 ); // reception reponse serveur.
     
                // cloture de la connection.
                fputs ( $connection, "QUITrn");
                    if ($debug) echo "en cours : QUIT<br>";
     
                fclose($connection);
     
                    // nous verifions les reponse du serveur a propos de la commande to et mail.
                    // le serveur renvois le code  550 si elle n'existe pas
                    // check du mailbox.
                    if ( !ereg ( "^250", $From ) || !ereg ( "^250", $To )) {
                        $Return[0]=false;
                        $Return[1]="{$email} le serveur rejete l'adresse.";
                        if ($debug) echo "{$email} le serveur rejete l'adresse.<br>";
                        return $Return;
                    }
            }
     
              }//fin if $connection
     
            else {
            $Return[0]=false;
            $Return[1]="connection impossible E-Mail server ({$cible}).";
            if ($debug) echo "connection impossible E-Mail server ({$cible}).<br>";
            return $Return;
        }
        $Return[0]=true;
        $Return[1]="{$email} cet email est valide";
        return $Return;
             } //fin verif_email.
     
     
    ?>
    Voila j'espère que cela t'aidera.

    Tim

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    + pièce jointe !
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    merci pour les renseignements.
    J'essayerai la semaine prochaine.
    Pas le temps pour l'instant.
    Mais je vois que le pb se pose pour d'autres ( message : mail() et email invalide )

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/03/2009, 19h21
  2. [Mail] Utiliser mail() à partir de ma machine locale
    Par robocop333 dans le forum Langage
    Réponses: 5
    Dernier message: 10/05/2008, 16h43
  3. [Mail] utilisation de la fonction mail en php
    Par chti_juanito dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2008, 10h57
  4. Réponses: 21
    Dernier message: 01/03/2006, 16h51
  5. [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