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

VBScript Discussion :

[VBS] recherche dans des fichiers Outlook msg


Sujet :

VBScript

  1. #1
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut [VBS] recherche dans des fichiers Outlook msg
    Bonjour,

    Je suis débutant en VBS (mon niveau se situe environ là où est arrivé mon petit tutoriel : tuto)

    Je voudrais savoir si ceci est possible en VBS :

    Lancer un script qui demande en input un email, un chemin de dossier, et qui recherche dans ce dossier (et sous-dossiers) tous les fichiers *.msg qui ont cet adresse dans le champs FROM.

    Je vais chercher moi-même bien sûr pour le faire tout seul, mais je voudrais juste savoir d'abord si c'est quelque chose de réalisable en VBS.

    Merci d'avance pour votre info...

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    les fichiers "*.msg" ... c'est quoi des fichiers textes (j'ai pas outlook sous la main..)

    interesse-toi à : 2.2. Fichiers : le FileSystemObject
    pour parcourir puis ouvrir tes fichiers...

  3. #3
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Je n'ai pas trouvé ma réponse dans le lien que tu as mis.
    Hélas, *.msg n'est pas qu'un simple format texte, c'est plus sophistiqué que ça...

    En fait, ma question doit être plus précisée : un fichier *.msg, pour ceux qui le savent pas, est un format d'archivage d'Outlook pour UN e-mail.
    Moi, ce que je voudrais savoir, c'est s'il y a des fonctions de bibliothèques, accessibles via VBS, qui me permettent de récupérer les différents champs d'un e-mail, et d'ensuite faire les traitements que j'ai envie avec les champs récupérés.

    Quelqu'un a une idée ?

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Et concrétement, ces fichiers .msg devraient se trouver ou ?

    Sur le poste client, sur le serveur, dans Outlook, ...

  5. #5
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Dans un folder, comme précisé déjà dans mon premier post...

    Le but est de faire des recherches dans un archivage simple de mails stockés au format *.msg dans un folder.

    Ma question est toute simple en fait :

    Peut-on accéder aux caractérisitiques d'un e-mail au format *.msg (HEADER, CC, FROM, BODY, ATTACHEMENT, etc...) grâce à une bibliothèque accessible en VBS ?

  6. #6
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Les fichiers *.msg intéressent peu de monde, dirait-on...

    J'ai trouvé sur internet une librairie qui prétend pouvoir lire les msg, mais je ne sais pas si je peux l'utiliser en VBScript :

    http://www.codeproject.com/useritems/MsgReader.asp

    J'ai lu dans un bouquin que toute dll pouvait être utilisée dans un script VBS, mais je ne suis plus sûr...

    ? ? ?

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben non toutes les dll ne peuvent pas être utilisés en VBScript...
    peut être avec : dynawrap ... si omen passe par la il nous en dira plus ... voir : http://www.developpez.net/forums/sho...d.php?t=333644


    sinon .. dans ton cas .. as tu outlook sur le pc où est exécuté ton VBscript..si oui dans ce cas tu dois pouvoir le piloter en VBScript.. non ..?

  8. #8
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Outlook se trouve bien sur le PC où sont archivés les fichiers *.msg .

    J'aurai bien voulu me passer de transiter via Outlook, mais si c'est inévitable, je veux bien étudier une solution via le pilotage du logiciel de messagerie.

    Autrement dit, on peut imaginer que la recherche d'un e-mail donné peut se faire alors via la procédure suivante.

    - Le script ouvre Outlook (OK pour moi)
    - Le script ouvre un fichier *.msg à la fois dans Outlook (Ce doit être faisable)
    - Le script check via Outlook si le msg ouvert contient bien l'e-mail recherché, sinon passe au suivant (est-ce possible ???)

    Merci encore pour votre aide...

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    je ne vois pas de fonction d'import de .msg.. dans outlook..

    peu-être une piste : http://www.dimastr.com/redemption/
    http://www.dimastr.com/redemption/objects.htm#examples

    si quelqu'un à des infos sur cette librairie redemption ... ?


    [edit]
    finalement la fonction CreateItemFromTemplate ... à l'air de convenir..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set myOlApp = CreateObject("Outlook.Application")
    Set myItem = myOlApp.CreateItemFromTemplate   ("D:\tmp\monmes.msg")
    msgbox myItem.SenderName

  10. #10
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Waouww !!

    Super, merci !!

    On est sur une voie royale, là !!

    Ca marche en effet. Le bout de code vbs que tu as mis permet en effet de sortir le nom de l'expéditeur du mail stocké dans un fichier *.msg donné.

    Il suffit maintenant de faire une petite routine qui prend un par un tous les fichiers *.msg d'un folder donné, de récupérer à chaque fois le senderName, et de le comparer à l'email de l'expéditeur recherché.

    Ensuite, on sort une petite liste de tous les msg qui étaient dans ce cas de figure...

    Je ne mets pas ce post en résolu, car je vais encore revenir avec le script complété et certainement d'autres questions, mais je te remercie déjà beaucoup bbil, car tu m'as donné le petit coup de pouce nécessaire pour avancer...


    [ EDIT : ]

    Comment trouver la syntaxe de tous les autres champs, du style myItem.SenderName ? (CC, BODY, ATTACHMENT,...)
    Où puis-je trouver cette documentation ?

  11. #11
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Voici déjà les champs que j'ai trouvé en cherchant sur le net (champs qui fonctionnent très bien chez moi) :

    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
     
    Set myOlApp = CreateObject("Outlook.Application")
     
    Set myItem = myOlApp.CreateItemFromTemplate("C:\TEST\test.msg")
     
    MsgBox   "SenderName : "             & myItem.SenderName & vbCr _
           & "ReplyRecipientNames : "    & myItem.ReplyRecipientNames & vbCr _
           & "TO : "                     & myItem.To & vbCr _
           & "BCC : "                    & myItem.BCC & vbCr _
           & "CC : "                     & myItem.CC & vbCr _
           & "Importance : "             & myItem.Importance & vbCr _
           & "Subject : "                & myItem.Subject & vbCr _
           & "Sent On : "                & myItem.SentOn & vbCr _
           & "ReceivedOnBehalfOfName : " & myItem.ReceivedOnBehalfOfName & vbCr _
           & "SentOnBehalfOfName : "     & myItem.SentOnBehalfOfName & vbCr _
           & "EntryId : "                & myItem.EntryID & vbCr _
           & "Size : "                   & myItem.Size & vbCr _
           & "Body : "                   & myItem.Body
    mais ce que je ne comprends pas, c'est que j'ai en réalité le nom de l'expéditeur avec SenderName, pas son e-mail ????

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par calogerogigante Voir le message
    ....
    Comment trouver la syntaxe de tous les autres champs, du style myItem.SenderName ? (CC, BODY, ATTACHMENT,...)
    Où puis-je trouver cette documentation ? ...
    voir l'aide en ligne VBA ... d'outlook .. (j'ai pas trouvé .. l'adresse mail, où du moins comment faire le lien entre SenderName et cette adresse...)

    peu-être une nouvelle discussion à ouvrir sur le forum VBA outlook ..?

  13. #13
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    N'y a-t-il vraiment pas moyen de continuer en VBS ?
    Car on est proche du but, là...

    Je peux déjà effectuer des recherches sur les e-mails TO, CC et BCC, et sur le contenu du body... C'est déjà super.
    Mais il me manque le plus important : pouvoir faire des recherches sur les msg qui proviennent d'un e-mail donné.

    Je ne comprends pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myItem.SenderEmailAddress
    me renvoit une erreur VBS chez moi ?

    Est-ce parce qu'on utilise "CreateItemFromTemplate", qui crée un nouveau msg, avec les champs TO, CC, BCC, BODY, etc... mais qui refuse de créer un "nouveau" msg qui n'a jamais été envoyé par l'expéditeur du MSG dont on part pour faire une copie ?

    En soi, c'est logique, mais il doit bien y avoir un moyen propre de récupérer le FROM de ce fichier msg...

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par calogerogigante Voir le message
    N'y a-t-il vraiment pas moyen de continuer en VBS ?
    Car on est proche du but, là...
    ...
    non mon but n'était pas de te faire passer au VBA, mais d'utiliser l'aide VBA d'outlook .. pour trouver les propriétés et méthodes des objets "d'outlook"

    je n'ai vu nulle par de SenderEmailAddress

  15. #15
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    J'ai cherché dans cette aide de Microsoft :

    http://msdn2.microsoft.com/en-us/lib...ffice.11).aspx

    Car les autres champs étaient référencé aussi dans cette partie de la doc...

    Mais je crois que ce "SenderEmailAddress" concerne un autre type d'objet. (je suis débutant en VBS et ne voit pas encore très clair dans tout ça )

    Où puis-je trouver l'aide VBA d'Outlook ?

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ok c'est à priori une nouveauté d'outlook 2003 ( moi je suis en 2002..)

    http://msdn2.microsoft.com/en-us/lib...ffice.11).aspx

  17. #17
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Moi aussi, j'ai Outlook 2002 au boulot. Et SenderEmailAddress ne fonctionne pas non plus, hélas...

    Est-ce que ça veut dire que SenderEmailAddress ne fonctionne qu'à partir d'Outlook 2003 ?
    Ou est-ce dû à l'utilisation de CreateItemFromTemplate qui (à mon avis) ne reproduit pas le champ FROM dans sa copie ?

    Puisque le format msg existe aussi sous Outlook 2002, il doit quand même y avoir moyen de récupérer ce #"?§crénondidjuu&#!§ de champs FROM ????

  18. #18
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Dit mois ton fichier .MSG à la tête d'un fichier XML ?
    Tu peux l'ouvrir en fichier texte ?
    Parce qu'il te suffirait dans ce cas de faire ton propre parseur.
    Si tu ne cherches que le champ From ....
    En plus en VBS c'est facile de lister tous les fichiers d'extension précises contenues dans un dossier

  19. #19
    Membre confirmé Avatar de calogerogigante
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 516
    Points
    516
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Dit mois ton fichier .MSG à la tête d'un fichier XML ?
    Tu peux l'ouvrir en fichier texte ?
    Parce qu'il te suffirait dans ce cas de faire ton propre parseur.
    Hélas non, c'est principalement un format "englobant", qui semble contenir du texte et du binaire (la preuve, les attachements d'un mail sont inclus).
    J'ai déjà essayé textuellement, mais ce n'est pas possible. Il faut passer par des méthodes...

    Ouvrir un fichier *.msg avec WORDPAD te montre des caractères illisibles et quelques champs textes lisible. Mais ces champs textes ne sont pas toujours évident à comprendre, s'il s'agit du champ BCC, CC, etc...

    Citation Envoyé par ced600 Voir le message
    En plus en VBS c'est facile de lister tous les fichiers d'extension précises contenues dans un dossier
    Oui, tout à fait. Comme msg est propre à Windows et VBS aussi, c'est pour ça que je m'obstine à faire ce petit script de recherche dans les fichiers *.msg en VBS...

    On n'est pas loin de la solution, mais il faut encore trouver comment extraire proprement le champ FROM d'un e-mail stocké au format *.msg .

    Si quelqu'un a une idée de génie ?

  20. #20
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    as tu essayer de trouver un parseur gratuit de ce genre de fichier sur google ?

    On ne sait jamais

    Après jamais fait de VBA/VBS Outlook alors je ne peux pas trop t'aider.

    Surtout si tu as une ancienne version, je ne suis même pas sur que l'aide en ligne MSDN te propose encore une description de librairies pour 2002

Discussions similaires

  1. Optimiser la recherche dans des fichiers
    Par Napalm51 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/01/2008, 14h28
  2. Recherche dans des fichiers en dehors du workspace
    Par RMK68 dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 15/01/2008, 10h39
  3. [Débutant] Recherche dans des fichiers
    Par drcd dans le forum Oracle
    Réponses: 0
    Dernier message: 18/10/2007, 11h38
  4. Réponses: 6
    Dernier message: 26/12/2005, 00h48
  5. [XP] recherche dans des fichiers d'extension jsp
    Par drinkmilk dans le forum Windows XP
    Réponses: 5
    Dernier message: 20/10/2005, 08h55

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