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

C++Builder Discussion :

Comment recuperer les elements d'un message Outlook


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut Comment recuperer les elements d'un message Outlook
    Suite a cette discution
    Voici comment recuperer les elements d'un 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
    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
     
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    Variant vMSOutlook, vEspaceDeNom, vDossierReception, olFolderInbox;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            try
    {
        vMSOutlook = Variant::GetActiveObject("Outlook.Application");
    }
            catch(...)
    {
        vMSOutlook = Variant::CreateObject("Outlook.Application");
    }
    vEspaceDeNom = vMSOutlook.OleFunction("GetNameSpace", "MAPI");
    /*
    Profile   Argument de type Variant facultatif. Nom du profil, en tant que valeur String, à utiliser pour la session.
    Password   Argument de type Variant facultatif. Mot de passe (le cas échéant), en tant que valeur String, associé au profil.
    ShowDialog   Argument de type Variant facultatif. Affectez-lui la valeur True pour afficher la boîte de dialogue d'ouverture de session MAPI.
    NewSession   Argument de type Variant facultatif. Affectez-lui la valeur True pour créer une session (n'utilise pas une session existante). Vous ne pouvez pas créer plusieurs sessions dans Outlook.
    Logon "myProfile", "myPassword", True, True
    */
       // Ici on utilise le profil par défaut
      vEspaceDeNom.OleFunction("Logon", "", "", true, true);
    // 3 = elements supprimes
    // 4 = boite d'envoi
    // 5 = elements envoyes
    // 6 = boite de reception
    // 9 = calendrier
    // 10 = contacts
    // 11 = boite de dialogue activer journal suivi messages
    // 12 = notes
    // 13 = taches
    // 14 = rappels
    // 15 = rappels
    // 16 = brouillons
    //
    vDossierReception = vEspaceDeNom.OlePropertyGet("GetDefaultFolder", 6);
    vDossierReception.OleFunction("Display");        
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vEspaceDeNom.OleFunction("Logoff");
    vMSOutlook.OleFunction("Quit");        
    }
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Variant vEspaceDeNom, vDossierReception, vmyItem;
    vEspaceDeNom = vMSOutlook.OleFunction("GetNameSpace", "MAPI");
    vDossierReception = vEspaceDeNom.OlePropertyGet("GetDefaultFolder", 6);// boite de reception
    //ici on affiche les elements du deuxieme message recu
    vmyItem = vDossierReception.OlePropertyGet("Items", 1).OlePropertyGet("To");
    RichEdit1->Lines->Add(vmyItem);
    vmyItem = vDossierReception.OlePropertyGet("Items", 1).OlePropertyGet("Subject");
    RichEdit1->Lines->Add(vmyItem);
    vmyItem = vDossierReception.OlePropertyGet("Items", 1).OlePropertyGet("SenderEmailAddress");
    RichEdit1->Lines->Add(vmyItem);
    vmyItem = vDossierReception.OlePropertyGet("Items", 1).OlePropertyGet("Body");
    RichEdit1->Lines->Add(vmyItem);
    vmyItem = vDossierReception.OlePropertyGet("Items", 1).OlePropertyGet("ReceivedTime");
    RichEdit1->Lines->Add(vmyItem);
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Merci blondelle pour ce code. Cependant peut tu me dire où tu as eu toutes ces informations ? Car tu es l'auteur de la partie Outlook de la FAQ et j'aimerais en savoir un peut plus la dessus.

    Merci.

    [EDIT :] J'aimerais surtout savoir comment obtenir le numéro du message lors d'un drag n drop.

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Les codes sont soit une traduction de code Delphi soit VBA
    L'aide en ligne VB Outlook donne de nombreux exemples, pour la traduction il y a la pratique et beaucoup de patience
    Les messages s'empilent les un sur les autres donc le dernier message a le numero le plus eleve
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Après avoir fouillé un peut les codes et constantes VBA je m'en revient à vous sans succès. Savez vous si une constante permettrai de renvoyer le numéro d'un e mail sélectionné dans Outlook ?

    Merci.

    [EDIT : ] Je crois avoir trouvé la constante en question : SELECTION du membre Explorer.

    Reste à savoir comment l'utiliser...

    J'ai le code en VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub GetSelectedItems()
        Dim myOlApp As New Outlook.Application
        Dim myOlExp As Outlook.Explorer
        Dim myOlSel As Outlook.Selection
        Dim MsgTxt As String
        Dim x As Integer
        MsgTxt = "You have selected items from: "
        Set myOlExp = myOlApp.ActiveExplorer
        Set myOlSel = myOlExp.Selection
        For x = 1 To myOlSel.Count
            MsgTxt = MsgTxt & myOlSel.Item(x).To & ";"
        Next x
        MsgBox MsgTxt
    End Sub

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Sixpounder
    Quelque chose comme ceci
    Le code
    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
     
    Variant vMSOutlook, vmyOlSel, vmyOlExp;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    String MsgTxt = "You have selected items from: ";
            try
    {
        vMSOutlook = Variant::GetActiveObject("Outlook.Application");
    }
            catch(...)
    {
        vMSOutlook = Variant::CreateObject("Outlook.Application");
    }
    vmyOlExp = vMSOutlook.OlePropertyGet("ActiveExplorer");
    vmyOlSel = vmyOlExp.OleFunction("Selection");
    for(int x = 1; x <= (vmyOlSel.OleFunction("Count")); x++)
    {
    ShowMessage(MsgTxt + (vmyOlSel.OlePropertyGet("Item", x).OlePropertyGet("To")) + ";");
    }
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Merci je vais tester demain, ton code ressemble au mien mais je ne savais pas comment écrire avec la bonne syntaxe cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage(MsgTxt + (vmyOlSel.OlePropertyGet("Item", x).OlePropertyGet("To")) + ";");
    En tout cas merci je te dirais si tout marche correctement demain.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Ton code marche parfaitement ! Merci bien.

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Pas de quoi
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. Comment recuperer les elements d'un ListView en C#
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 15/12/2013, 12h04
  2. [SqlServer 2005] Comment recuperer les messages erreurs
    Par pb_inge dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/04/2008, 14h01
  3. comment recuperer les messages de la console vers mon appli?
    Par makohsarah dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 01/09/2007, 11h59
  4. comment recuperer les messages
    Par devalender dans le forum Débuter
    Réponses: 2
    Dernier message: 17/06/2004, 19h30

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