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] possibilite de connaitre un mail nonexistant


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut [Mail] possibilite de connaitre un mail nonexistant
    bonjour , je suis en train de faire une gestion de newsletter mais j arrive pas a connaitre les mails inexistants lors de l envoi d'un newsletter
    voila le code:


    $entete="Content-type:text/html\r\n";
    $entete.="From:".$config[3]." <".$config[5].">\r\n";
    $entete.="Reply-To:".$config[3]." <".$config[7].">\r\n";
    //$entete.="Bcc:".$destinataires."\r\n";

    //Envoi du mail a chaque destinataire
    $nbrEchecs=0;
    while ($REP4=mysql_fetch_array($REQ4)){
    $REP4['email']=str_replace("\r\n", "", $REP4['email']);
    if (mail($REP4['email'],$sujet,$corps,$entete)){
    /*
    if ($REP4['email']=="info@artforum.ru"){
    echo $REP4['email'];
    echo $sujet."<br>";
    echo $corps."<br>";
    echo $entete."<br>";
    */
    } else {
    $adressesEchecs.=$REP4['email']."\\n";
    $nbrEchecs++;
    }
    }
    if (isset($adressesEchecs)){
    echo "<script language='javascript'>";
    echo "alert(\"Echec de l'envoi de la newsletter sur les adresses suivantes :\\n\\n".$adressesEchecs."\");";
    echo "</script>";

    mkdir('echecs/'.stripslashes($newsname));
    $filename="echecs/".stripslashes($newsname)."/".$_POST["type"]."_".$_POST["numType"].".html";
    $handle=fopen($filename,"w+");
    $adressesEchecs=str_replace("\\n","<br>", $adressesEchecs);
    fwrite($handle, $adressesEchecs);
    fclose($handle);
    }

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    il me semble que la valeur de retour de mail() n'a rien à voir avec l'existence du destinataire...

    Si je ne me trompe pas, ton problème rejoint celui que j'ai abordé dans un autre sujet récent, à savoir le traitement des REPONSES des serveurs SMTP (pas de la fonction mail())

    En gros pour traiter ce genre de souci, il faut extraire de ta boite les retours de mails infructueux et les analyser...

    tu as un autre moyen un peu à l'arrache qui te permet de savoir qui lit ton mail et qui ne le lit pas. Mais je sais pas si c'est ça qui t'intéresse

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    ça ne correspond pas complètement à ce que tu souhaite, mais c'est déjà une première partie
    http://fr2.php.net/checkdnsrr

    cette fonction te permet de savor si ce qui est après le @ existe vraiment
    (attention, cette fonction ne fonctionne pas partout)
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    tu peux m envoyer comment utiliser cette fonction et il faut que je precise les les serveurs de noms de mon FAI

  5. #5
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    est ce que il faut que je mentionne tout les serveurs de messagerie dans la liste pour utiliser cette fonction ou l autre Net_DNS

  6. #6
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    en cherchant un peu sur

    tu aurais trouver plusierus fonctions de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function check_mail ($mail) {
            list($user, $domain) = split("@", $mail, 2);
            if (checkdnsrr($domain, "MX")) {
                    return true;
            } else
                    return false;
    }
    Attention, tu confond.
    ça ne trie pas les domaine que tu veux.
    Pour ça, pas besoin de fonction, tu découpe ton adresse et tu vérifie si la partie droite est par exemple dans un tableau.

    checkdnsrr t'indique si c'est un domaine réellement valide.
    par exemple
    checkdnsrr('yahoo.com', 'MX') renvoie true
    checkdnsrr('yahoo.cop', 'MX') renvoie false
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  7. #7
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    je ne crois pas que ce soit ce qu'il cherche...

    avec cette fonction,

    lkqsjdflqksdvqsd**$ù^qsd$*fmqs$df@hotmail.com

    est valide...

    De plus la plupart des gens qui remplissent un formulaire avec un faux mail pour ne pas être embêtés (moi le premier) mettent un vrai serveur (genre hotmail ou yahoo)

  8. #8
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    je ne crois pas que ce soit ce qu'il cherche...
    effectivement, d'ou ceci dans mon premier message

    ça ne correspond pas complètement à ce que tu souhaite, mais c'est déjà une première partie
    car il n'y a pas de moyen simple de connaitre l'existence d'une adresse mail.

    De plus la plupart des gens qui remplissent un formulaire avec un faux mail pour ne pas être embêtés (moi le premier) mettent un vrai serveur (genre hotmail ou yahoo)
    Alors ça, faudrait voir des stats, pcq je pense que c'est très discutable


    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  9. #9
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    ah ? je le pense en tout cas...

    enfin ça ne change rien de toutes façons...

    Comme je le disais tu as un moyen pas très compliqué de savoir si le mail est OUVERT, mais c'est plus dur de savoir s'il est arrivé

  10. #10
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    voila une fonction que j ai construit grace au recherche :

    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
     
    <?
    //fonction 
    function test{
    // Auteur : Communauté PEAR
    // Mise en exemple par Alexandre TRANCHANT
    //La variable $mail est-elle une adresse e-mail syntaxiquement valide ?
    <a href="http://www.developpez.net/forums/" target="_blank">//$mail='john.doe@example.org'</a>;
    $mail=$REP4['email'];
    require 'PEAR.php'; //Appel de la librairie PEAR
    require 'Mail/RFC822.php'; //Appel de la librairie Mail_RFC822
    $testM=1;
    $lo_mail = Mail_RFC822::parseAddressList($mail, NULL, FALSE);
    if(PEAR::isError($lo_mail)){
        //$lo_mail est une erreur
        //l'adresse e-mail n'est donc pas valide
        echo $mail.'n\'est pas une adresse e-mail valide';
     return 0;
     $testM=0;
        die();
    } elseif ($lo_mail[0]->host=='localhost'){
        //le nom de domaine de cette adresse est localhost 
        //dans cet exemple on refuse ce genre de mail !
        echo $mail.'n\'est pas une adresse valide';
     return 0;$testM=0;
        die();
    } else {
        echo $mail.' est une adresse e-mail SYNTAXIQUEMENT valide';
    }
    //$lo_mail contient l'adresse e-mail stockée dans un tableau
     
     
    /*
    Voici le contenu de $lo_mail
    Array
    (
        [0] => stdClass Object
            (
                [personal] => 
                [comment] => Array
                    (
                    )
                [mailbox] => john.doe
                [host] => example.org
            )
    )*/
    $ls_domaine=$lo_mail[0]->host;
    //$ls_domaine contient example.org
     
    //Rappel : La valeur ci dessous a normalement été initialisée dans la partie 2 du script
    //$ls_domaine = 'developpez.com';
    //Inscrivez dans ce tableau les serveurs de noms de votre FAI.
    /*$la_serveur_de_nom=array(
        '212.27.32.5',      //Adresse IP du serveur de noms primaire de mon FAI (Free)
        '212.27.32.176',    //Adresse IP du serveur de noms secondaire de mon FAI (Free)
        '212.27.32.177'     //Adresse IP du serveur de noms tertiaire de mon FAI (Free)
    );*/
    //Appel de la bibliothèque PEAR : Net DNS
    require_once 'Net/DNS.php';
    //Les fonctions ne peuvent pas s'appeler de façon statitique cette fois
    //On crée donc une instance de classe Net_DNS_Resolver
    $lo_resolver = new Net_DNS_Resolver();
    //Décommentez cette ligne pour afficher le debuggage
    $lo_resolver->debug=1;
    //On précise nos noms de serveurs
    //$lo_resolver->nameservers=$la_serveur_de_nom;
    //On lance une requête, on précise MX pour identifier un éventuel serveur de mail
    $lo_response = $lo_resolver->query($ls_domaine,'MX');
    //on teste la réponse
    if ($lo_response) {
      foreach ($lo_response->answer as $lo_rr) {
        //On affiche le résultat pour l'exemple, mais c'est inutile dans l'aboslu
        $lo_rr->display();
        echo "Nom de serveur de mail $ls_domaine valide";
       return 1;
     $testM=1;
      }
    } else {
        echo "Nom de serveur de mail $ls_domaine inconnu";
     return 0;$testM=0;
    }
    }
    ?>

  11. #11
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    j'ai la forte impression que ton script revient au même que ce que te proposait wamania (avec la verification syntaxique qu'il te suggérait).

    Mais ça ne vérifie en rien la validité de CETTE boite mail, seulement celle du serveur

  12. #12
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 59
    Par défaut
    oui , je sais
    ce que je voulais faire avant c'est presque impossible comme il a dit , mais ce que vous voyez comme code ne marche pas je recois une erreur
    est ce que il est imperatif que je met le fichier PEAR.php sur mon serveur ftp pourque ca marche
    merci de votre aide

  13. #13
    Membre éprouvé
    Inscrit en
    Janvier 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 140
    Par défaut
    PEAR est normalement déjà présent dans ton PHP...

    essaye de penser à mettre les erreurs quand tu en as, ça nous aiderait...

    Et je ne pense pas que ça soit impossible. Il est même fort probable que j'ai à le faire dans quelques semaines

Discussions similaires

  1. Connaitre le mail de l'expediteur en VBA Excel (Lotus 8.5)
    Par omarter dans le forum Lotus Notes
    Réponses: 11
    Dernier message: 24/07/2012, 07h51
  2. Possibilité d'envoi par mail
    Par Frenchguy dans le forum VBA Access
    Réponses: 7
    Dernier message: 24/05/2007, 15h43
  3. Réponses: 1
    Dernier message: 13/07/2006, 10h01
  4. [Mail] Impossible d'envoyer un mail
    Par bugalood dans le forum Langage
    Réponses: 4
    Dernier message: 17/09/2005, 02h38
  5. [Mail] Convertir texte en adresse mail
    Par Jean-Michel dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2005, 04h40

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