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. #21
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut,
    Avec ce code sur un mail (ou autre élément")dans outlook ,VBE tu verras la plupart des objets dans les variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub BaBa()
    Dim App
    Dim Insp
    Dim Expl
    Dim Oitem
        Set App = Outlook.Application 'désigne Outlook
        Debug.Print App
        Set Expl = App.ActiveExplorer 'désigne l'exploreur actif càd la fenêtre des dossiers.
        Debug.Print Expl.Caption
        Set Insp = ActiveInspector 'désigne la fenêtre de l'élement actif
        Debug.Print Insp.Caption
        Set Oitem = ActiveInspector.CurrentItem 'désigne l'élément actif càd le mail le contact ou rdv...
        Debug.Print Oitem
        Stop
    Sinon un .msg peut "en partie" être lu avec un éditeur de texte genre le bloc note.

    Dans la méthode proposée avec CreateItemFromTemplate le pb c'est que tu crées un NOUVEAU MAIL et que tu n'ouvres pas le mail qui comporte lui bien l'expéditeur la date d'expédition ...

    Pour ouvrir le .msg il faut reproduire le "ouvrir" de l'explorateur :
    "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE" /f "%1"

  2. #22
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Citation Envoyé par ced600 Voir le message
    as tu essayer de trouver un parseur gratuit de ce genre de fichier sur google ?
    Oui, j'en ai trouvé un, qui semble convenir à ce que j'ai besoin de faire, mais honte sur moi : je ne sais pas comment l'utiliser...
    Je suis encore trop débutant en programmation Windows.

    Le voici :

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

  3. #23
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    SAlut,
    Avec ce code sur un mail (ou autre élément")dans outlook ,VBE tu verras la plupart des objets dans les variables
    Ca m'a l'air compliqué ? Peux-tu me donner un exemple concret en VBS directement ? (Excuse-moi, je suis tout nouveau dans l'apprentissage de VBS).

    Citation Envoyé par Oliv- Voir le message
    Sinon un .msg peut "en partie" être lu avec un éditeur de texte genre le bloc note.
    Oui, mais le résultat n'est pas top. Comme dit plus haut, on n'est jamais sûr de récupérer correctement tel ou tel champs... Je crois qu'il vaut mieux passer par des bibliothèques spécifiques, non ?

    Citation Envoyé par Oliv- Voir le message
    Dans la méthode proposée avec CreateItemFromTemplate le pb c'est que tu crées un NOUVEAU MAIL et que tu n'ouvres pas le mail qui comporte lui bien l'expéditeur la date d'expédition ...
    Entièrement d'accord avec toi, c'est ce que je pense aussi. C'est sans doute pour ça que je n'arrive pas à récupérer le FROM de la copie du msg en question.

    Mais alors ? Comment faire ?

  4. #24
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Je ne peux pas mettre de lien direct donc si tu suis le lien de mon site web (en bas de cet article) et va sur l'article r15000 tu auras un petit didacticiel VBA.

    Si tu es débutant en VBS tu peux commencer plutot par du VBA c'est presque pareil mais plus facile car tu as un déboggueur.

  5. #25
    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 : 42
    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
    J'avais vu un topic passé il y a très longtemps parlant de la possibilité de se créer un débugger en VBS simplement. Peut être dans les contribution.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  6. #26
    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 038
    Points
    20 038
    Par défaut
    à je pense avoir trouvé faut utiliser un objet mapi.session pour faire le lien entre sendername et l'adresse j'étais pas loin dans la doc msdn voir (GetSender()):

    http://msdn2.microsoft.com/en-us/lib...612730_topic29

    ..
    je te prépare un script..

    Tiens ..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set myOlApp = CreateObject("Outlook.Application")
    Set myItem = myOlApp.CreateItemFromTemplate   ("D:\tmp\monmes.msg")
    myITEM.Save  'Il faut sauver sinon EntryID =""
    Set objCDO = CreateObject("MAPI.Session")
    objCDO.Logon "", "", False, False
    Set objMsg = objCDO.GetMessage(myItem.EntryID)
    msgbox objMsg.Sender.Address
    myItem.delete 'On ne garde pas le message
    reste peu-être le probléme de sécurité (fenêtre d'autorisation au démarrage...) à voir si gênante dans ton cas

  7. #27
    Membre confirmé Avatar de calogerogigante
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 602
    Points : 497
    Points
    497
    Par défaut
    Salut bbil,

    La fenêtre de sécurité n'est pas du tout gênante. J'ai juste une crainte que quand mon script sera fini, autoriser l'accès du script à Outlook pendant 10 min ne soit pas suffisant pour finir une recherche dans des tas de folders contenant des msg...

    J'ai essayé ton bout de code dans un fichier texte d'extension *.vbs, en mettant un path vers un *.msg présent sur mon PC.
    Mais j'ai un message d'erreur que je ne comprends pas ??????

    Il fonctionne, chez toi, ton bout de code ?

  8. #28
    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 038
    Points
    20 038
    Par défaut
    c'est quoi le message d'erreur..?

  9. #29
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    salut bbil ca ne renvoi pas ton adresse à toi ce code ?

    l'adresse de l'exp est dans SenderEmailAddress.

    Sinon tu dois pouvoir utiliser la recherche de fichier de office au moins pour dégrossir ta recherche.
    voire un truc comme google desktop.

  10. #30
    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 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    salut bbil ca ne renvoi pas ton adresse à toi ce code ?
    non ... : sender c'est bien expéditeur

    Citation Envoyé par Oliv- Voir le message
    l'adresse de l'exp est dans SenderEmailAddress...
    oui cela je l'ai déjà écrit plus haut .. mais il faut outlook 2003 .. mini .. et ici il c'est outlook 2002

  11. #31
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par bbil Voir le message
    non ... : sender c'est bien expéditeur
    oui cela je l'ai déjà écrit plus haut .. mais il faut outlook 2003 .. mini .. et ici il c'est outlook 2002
    au temps pour moi !!
    Ce que je craignais c'est qu'il ne reprenne pas les infos du msg d'origine et c'est le cas pour certaines infos comme les dates de création , etc...

    Pour éviter le message de sécurité il existe des logiciels comme clickyes mais qui font un trou de sécurité , sinon il faut mettre une partie du code dans outlook et lancer la macro à partir du vbs soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'ici on lance une macro du nom de ScheduleMeeting dans Outlook thisoutlooksession. 
    ' avec des paramétres
    Call myOlApp.ScheduleMeeting("22/09/2007", 1,1, "test",1440, "toto@toto.fr", "", "Display")
    dans outlook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ScheduleMeeting(Du_txtbox, Sujet, duree, Email, chef, corps)
    Dim myOlApp As Outlook.Application
    End Sub

  12. #32
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bon voici un VBS qui devrais aller:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set WshShell = WScript.CreateObject("WScript.Shell")
    Set myOlApp = CreateObject("Outlook.Application")
    shellcommande = """C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE"" /f ""C:\Documents and Settings\ton profil\Bureau\Réponse dans « Recuperer le chemin d'un  msg ».msg"""
    msgbox shellcommande 
     
    RetVal = WshShell.run (shellcommande, 1,true)
    'DoEvents
    Set myItem = myOlApp.ActiveInspector.CurrentItem
    MsgBox "Sujet: " & myItem.Subject & vbCr & "reçu le : " & myItem.ReceivedTime & vbCr & "A: " & myItem.To & vbCr & "Email Exp: " & myItem.SenderEmailAddress & vbCr & "PJ: " & myItem.Attachments.Count
    'myItem.Close 0 ' ferme sans enregistrer le mail
    le reste du code doit être bon quoique j'ai une erreur MAPI_E_INVALID_ENTRYID(80040107) chez moi sans doute car j'utilise le "mode exchange mis en cache" , je pense qu'il est cependant préférable d'utiliser REDEMPTION si vous avez une version avant 2003.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'CreateItemFromTemplate   ("C:\Documents and Settings\ton profil\Bureau\Réponse dans « Recuperer le chemin d'un  msg ».msg")
    myItem.Save  'Il faut sauver sinon EntryID =""
    msgbox myitem.saved
    Set objCDO = CreateObject("MAPI.Session")
    objCDO.Logon "", "", False, False
    Set objMsg = objCDO.GetMessage(myItem.EntryID)
    msgbox objMsg.Sender.Address
    myItem.delete 'On ne garde pas le message
    préférer peut être objMsg.delete qui ne remplira pas la corbeille.

    Mais je le redis si tu dois ouvrir x milliers de .msg pour trouver ton bonheur tu vas y passer des heures.

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