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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Récupérer les informations contenus dans un mail


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut Récupérer les informations contenus dans un mail
    Bonjour ,

    j' ai l intention de faire un script en PHP5(utilisation de la POO) qui me permettrait en parcourant un mail(au format mailbox) de récupérer quelques informations clé( nom expediteur, date, subject , .... et le contenu du message).
    Mais étant débutant en PHP, je ne vois pas quelle méthode utiliser.
    Il y a les expressions régulières ( mais je vois pas comment gérer toutes les valeurs que je veux recuperer).

    SI vous connaissez une méthode qui me permettrait de récuperer les différentes informations, ce serait gentil de me la communiquer .


    Merci d' avance

    acado

  2. #2
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Si c'est pour récupéré depuis un mail déja existant je ne vois pas du tout

    Sinon il y a la fonction mail(), avec un formulaire

    sinon regarde sur php.net et tape mail dans la recherche tu trouvera peut etre ton bonheur

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    il n y a pas de formulaire, je dois lire toutes les infos dans un fichier mail au format mailbox.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par acado
    il n y a pas de formulaire, je dois lire toutes les infos dans un fichier mail au format mailbox.
    Je sais pas à quoi ressemble le format mailbox, mais je pense qu'il faudra créer une fonction de hashage.
    Tu peux nous montrer à quoi ressemble un mail 'mailbox' ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    c est le format classique définit par la RFC2822 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    From: John Doe <jdoe@machine.example>
    			To: Mary Smith <mary@example.net>
    			Subject: Saying Hello
    			Date: Fri, 21 Nov 1997 09:55:06 -0600
    			Message-ID: <1234@local.machine.example>
     
    			This is a message just to say hello.
    			So, "Hello".

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par acado
    c est le format classique définit par la RFC2822 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    From: John Doe <jdoe@machine.example>
    			To: Mary Smith <mary@example.net>
    			Subject: Saying Hello
    			Date: Fri, 21 Nov 1997 09:55:06 -0600
    			Message-ID: <1234@local.machine.example>
     
    			This is a message just to say hello.
    			So, "Hello".
    Tu as déjà 5 mots clefs qui ne bougeront pas, ainsi tu peux déduire que entre 'from :' et 'To:' tu auras l'expéditeurs, ensuite dans l'expéditeur tu peux déduire qu'entre '<' et '>' tu as l'email, etc...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    merci je vais regarder ca, mais je viens de regarder plus précisément et le format est en fait maildir, je regarde ce que cela donne mais ca ne dois pas etre beaucoup plus différent.

    je vous tiens au courant

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    alors c bon , j arrive a récupérer toutes les infos que je veux à part le contenu du message :


    apparement il y a une ligne vierge entre les dernieres informations et le début du message en lui même.

    Comment pourrais je recuperer ce contenu???


    merci d avance

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 401
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par acado
    alors c bon , j arrive a récupérer toutes les infos que je veux à part le contenu du message :


    apparement il y a une ligne vierge entre les dernieres informations et le début du message en lui même.

    Comment pourrais je recuperer ce contenu???


    merci d avance
    Tu récupères quoi exactement le contenu avec la ligne vierge ou juste la ligne vierge ?
    Si c'est le premier cas tu fais trim($ton message) pour virer la ligne vierge avant ton message

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    merci de ta réponse mais ca me renvoi tout le texte et moi en fait je voudrais pouvoir récuperer que cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    This is a message just to say hello.
             So, "Hello".


    je pourrais le faire avec eregi() , si le texte commencait toujours apres la même balise or ce n est pas le cas . Apres le Message-ID: <1234@local.machine.example>, il peux y avoir d autres champs comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    In-Reply-To: <3456@example.net>
    References: <1234@local.machine.example> <3456@example.net>
    par exemple , et ca dépends du cheminement du mail....

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    personne n a d idée?

  12. #12
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    up

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    j ai peut etre une idée,

    ca serait de récupérer le numéro de ligne de la première ligne vierge rencontrée , et ensuite de prendre tout ce qu' il y a par la suite et le stocker dans un objet $contenu


    mais comment puis detecter une ligne vide? et en récupérer son numéro?

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    ouais, mais imagine que le petit malin commence son mail avec un saut de ligne, type \n, comment gérer la double ligne vide...?
    idée > voici un script pour choper chaque numéro de ligne vide, et par conséquent la premièr ligne vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    $fic = file("mail.txt");
    $nb_lignes = count($fic);
    for($i=0;$i<$nb_lignes;$i++)
    {
       $ligne = $fic[$i];
       if(strlen(trim($ligne))==0) echo "ligne vide : ".($i+1);
    }
    ?>

  15. #15
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    et en rajoutant un bit pour savoir quand on a trouvé le message :
    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
     
    <?
    $fic = file("mail.txt");
    $nb_lignes = count($fic);
    $debut_msg=0;
    for($i=0;$i<$nb_lignes;$i++)
    {
       $ligne = $fic[$i];
       if($debut_msg==1) echo $ligne."<br>";
       if(strlen(trim($ligne))==0)
       {
          $debut_msg=1;
       }
    }
    ?>
    après, on peut toujours placer chaque ligne lue dans un tableau, comme ça on se retrouve avec un tableau contenant uniquement le message et on peut ensuite le traiter comme on veut 8)

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    et voilà enfin le boulot, avec message dans un tableau :
    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
     
    <?
    $fic = file("mail.txt");
    $nb_lignes = count($fic);
    $debut_msg=0;
    $msg=array();
    $j=0;
    for($i=0;$i<$nb_lignes;$i++)
    {
       $ligne = $fic[$i];
       if($debut_msg==1) { $msg[$j]=$ligne; $j++; }
       if(strlen(trim($ligne))==0)
       {
          $debut_msg=1;
       }
    }
    for($k=0;$k<sizeof($msg);$k++) echo $msg[$k]."<br>";
    ?>
    bon week-end @ tous

  17. #17
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    ah merci bien pour cette aide.

    j avais une autre solution mais qui marchait pas convenablement.

    Par contre j ai un petit probleme, c pour récuperer la date :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date: Fri, 21 Nov 1997 09:55:06 -0600
    , ca n a pas l air de passer dans mon expression régulière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eregi($headers_array[$head].": ([^:]*)$",$file_array[$i],$recup)
    $headers_array est un tableau contenant les differents header que je veux recupérer et $head est un indice du parcours de ce tableau.

    Quand on arrive a la ligne qui commence par date, ca me renvoi rien :s

  18. #18
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Résolu de moi même

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/08/2014, 12h52
  2. Réponses: 2
    Dernier message: 13/10/2011, 16h08
  3. Réponses: 17
    Dernier message: 26/06/2008, 13h05
  4. Comment récupérer les informations stockées dans l'imprimante ?
    Par PDelph7 dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 22/01/2008, 10h01
  5. Réponses: 4
    Dernier message: 20/08/2007, 01h16

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