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

API, COM et SDKs Delphi Discussion :

Intercepter l'appuie sur le bouton "Envoyer" d'Outlook


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut Intercepter l'appuie sur le bouton "Envoyer" d'Outlook
    Bonjour,

    je pilote outlook 2003 via OLE.

    Je souhaite créer un message pré-rempli, afficher le mail ainsi créer et ensuite faire un traitement quand le message est envoyé par l'utilisateur.

    Je n'ai pas de problème pour créer le mail et pour l'afficher mais je n'ai aucune idée pour savoir si l'utilisateur a envoyé ce mail.

    J'aimerais donc savoir comment intercepter l'évenement Send d'outlook?

    Merci

    Je vous met le code de création du mail ci-dessous
    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
     
    type
      TEmail = record
        dDateRecept   : TDateTime;
        dDateCreation : TDateTime;
        sSenderName   : String;
        sSenderMail   : String;
        sCC           : String;
        sDestinataire : String;
        sSujet        : String;
        sContenu      : String;
        iPriorite     : integer;  // 0 Basse, 1 Normal, 2 Haute
        iSize         : integer;  // en octet
        iNbPiecesJointes      : integer;
        tCheminPiecesJointes  : array of string;
    end;
     
     
     
    function TOutlook.CreerEmail(Mail : TEmail): boolean;
    var
      vMail  : variant;
      i      : integer;
      vRecipient : variant;
      lTemp  : TStringList;
    begin
      Result := true;
      try
        //Création du mail
        vMail  := vApplication.CreateItem(0);
        //Ajout du destinitaires
        vRecipient := vMail.Recipients.Add(Mail.sDestinataire);
        vRecipient.Type := 1;
        if Mail.sCC <> '' then
        begin
          lTemp := TStringList.Create;
          lTemp.Delimiter := ';';
          lTemp.DelimitedText := Mail.sCC;
          for i := 0 to lTemp.Count - 1 do
          begin
            vRecipient := vMail.Recipients.Add(lTemp.Strings[i]);
            vRecipient.Type := 2;
          end;
          lTemp.Free;
        end;
        //Ajout du sujet
        vMail.Subject     := Mail.sSujet;
        //Ajout de la priorité
        vMail.Importance  := Mail.iPriorite;
        //Ajout de pièce jointe
        for i := 0 to Mail.iNbPiecesJointes -1 do
        begin
          vMail.Attachments.Add(Mail.tCheminPiecesJointes[i]);
        end;
        //Affichage de l'Email
        vMail.Display;
      except
        Result := false;
      end;
    end;

    P.S. :Ce code marche parfaitement je l'ai mis si certain veulent s'en servir.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Regarde l'événement ItemSend
    Informe votre programme que l'utilisateur a tenté d'envoyer un élément. Votre programme peut annuler l'événement pour empêcher l'envoi de l'élément.
    ps:
    Send place dans la corbeille d'envoi si je me souviens bien.

  3. #3
    Membre du Club

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Merci de cette réponse mais j'ai contourner ce problèlme en scrutant le dossier des éléments envoyés.

    Merci

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Pour info, ajour dans le prochaine FAQ:
    Comment gérer l'événement ItemSend ?

    Le composant TOutlookApplication implémente l'événement ItemSend, on peut donc être averti, par exemple, lors d'un envoi d'un mail et autoriser ou non son envoi si on le souhaite.

    L'argument ASender est l'application Outlook.
    L'argument Item peut être une des interfaces suivante :
    • AppointmentItem,
    • MeetingItem,
    • MailItem,
    • TaskItem.

    Elles implémentent la méthode Send générant l'événement ItemSend.

    L'argument Cancel annule l'envoi si on lui affecte la valeur True.

    Il est possible de coder de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.OutlookItemSend(ASender: TObject; const Item: IDispatch;
      var Cancel: WordBool);
     
    var S : String;
        UnMessage : MailItem;
    begin
     UnMessage:=Item as MailItem;
     S:='Ajout d''un mail '+UnMessage.Subject;
     
     ShowMessage(S);
     
     //Cancel:=True; //Annule l'envoi de l'item courant.
    end;
    Mais si l'argument Item ne supporte pas l'interface MailItem une exception est levée. Dans le cas où l'on souhaite manipuler plusieurs type d'interface la gestion des exceptions alourdira le code.

    Dans ce cas on utilise la fonction Supports qui nous indique si l'interface Item supporte ou non l'interface que l'on souhaite interrogée.
    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
     
    procedure TForm1.OutlookItemSend(ASender: TObject; const Item: IDispatch;
      var Cancel: WordBool);
     
    var S : String;
        UnMessage : MailItem;
        UneReunion : MeetingItem;
     
    begin
      // Est-ce l'envoi d'un mail ?
     If Supports(Item,MailItem,UnMessage) then
      with UnMessage do
       S:='Ajout d''un mail '+Subject;
     
      // Est-ce l'envoi d'une demande de participation à une réunion ?
     If Supports(Item,MeetingItem,UneReunion) then
      with UneReunion do
        S:='Ajout d''un contact '+SubJect+' '+SenderName;
     
     ShowMessage(S);
     
     //Cancel:=True; //Annule l'envoi de l'item courant.
    end;

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

Discussions similaires

  1. [Plugin] Interception de l'appui sur le bouton Entrer
    Par waelz1 dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 18/09/2014, 14h14
  2. [Plug-in] Intercepter l'appui sur le bouton Enregistrer
    Par waelz1 dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 22/08/2014, 20h33

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