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# Discussion :

Evénément NewMailEx dans Outlook


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 71
    Par défaut Evénément NewMailEx dans Outlook
    Salut, je reviens toujours sur un Addin que je developpe pour Outlook, en fait j'ai créer des sous dossiers dans la boite de reception de Outlook qui devrai contenir un type de mail spécifique , comme des filtre dans les web mail comm Yahoo.
    Alors j'ai placé mon code dans le fichier connect.cs, je vous en donne un extrait du contenu:

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    #region OnStartupComplete
    		public void OnStartupComplete(ref System.Array custom)
            {
                #region variables
                CommandBars oCommandBars;// Collection des commandbars de l'application hôte
    			CommandBar oStandardBar;// Notre barre d'outils
     
                Outlook.MAPIFolder oFolderSMS;//les sous dossiers Notifications SMS
                Outlook.MAPIFolder oFolderMMS;//les sous dossiers Notifications MMS
                Outlook.MAPIFolder oFolderFax;//les sous dossiers Notifications Fax
    			#endregion
     
     
                #region Création des sous dossiers de notification  
                //Applictaion Outlook
                Outlook.ApplicationClass OutlookApp = new Outlook.ApplicationClass();
     
                //le dossier InBox
                Outlook.NameSpace OutlookNameSpace = OutlookApp.GetNamespace("MAPI");
                Outlook.MAPIFolder oInbox = OutlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
                Outlook.Folders oFolders = oInbox.Folders;
     
                //sous dossiers de Notification (SMS, MMS, Fax)
                try
                {
                    oFolderSMS = oInbox.Folders["Notifications SMS"];
                    oFolderMMS = oInbox.Folders["Notifications MMS"];
                    oFolderFax = oInbox.Folders["Notifications Fax"];
                }
                catch (Exception)
                {
                    oFolderSMS = oFolders.Add("Notifications SMS", Outlook.OlDefaultFolders.olFolderInbox);
                    oFolderMMS = oFolders.Add("Notifications MMS", Outlook.OlDefaultFolders.olFolderInbox);
                    oFolderFax = oFolders.Add("Notifications Fax", Outlook.OlDefaultFolders.olFolderInbox);
                }
                #endregion
     
                #region NewMailExEventHandler
                OutlookApp.NewMail += new Outlook.ApplicationEvents_11_NewMailEventHandler(this.Outlook_NewMail);
                #endregion
     
    ......
     
    public void Outlook_NewMail()
            {
                try
                {
                    //Applictaion Outlook
                    Outlook.ApplicationClass OutlookApp = new Outlook.ApplicationClass();
     
                    //le dossier InBox
                    Outlook.NameSpace OutlookNameSpace = OutlookApp.GetNamespace("MAPI");
                    Outlook.MAPIFolder oInbox = OutlookNameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
     
                    //collection de mails récus
                    Outlook.Items oItems = (Outlook.Items)oInbox.Items;
     
                    //les mails non lus
                    oItems.Restrict("[UnRead] = true");
     
                    //les Filtres
                    string filtreSMS = "Accusé d'émission de SMS avec succès";
                    string filtreMMS = "Accusé d'émission de MMS avec succès";
                    string filtreFax = "Accusé d'émission de Fax avec succès";
     
                    //le premier mail
                    Outlook.MailItem unReadMails = (Outlook.MailItem)oItems.GetFirst();
     
                    //Traitement pour chaque nouveau mail reçu
                    while (unReadMails != null)
                    {
                        //déplacement des mails
                        if (unReadMails.Subject.Contains(filtreSMS)) unReadMails.Move(oInbox.Folders["Notifications SMS"]);
                        if (unReadMails.Subject.Contains(filtreMMS)) unReadMails.Move(oInbox.Folders["Notifications MMS"]);
                        if (unReadMails.Subject.Contains(filtreFax)) unReadMails.Move(oInbox.Folders["Notifications Fax"]);
     
                        //next
                        unReadMails = (Outlook.MailItem)oItems.GetNext();
                    }
                }
                catch (Exception ex){
                    MessageBox.Show("Exception produite" + ex);
                }
            }
    Mais je suis surpris ke lorsque je reçoi un mail contenant le filtre, le deplacement ne se fait..Alors je ne comprends plus rien alors ke le code marche indépendament...

    Je demande votre aide.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    OutlookApp.NewMail += new Outlook.ApplicationEvents_11_NewMailEventHandler(this.Outlook_NewMail);
    Là, tu travailles avec NewMail et pas NewMailEx.

    Abonnes-toi à NewMailEx et utilise le paramètre + la méthode GetItemFrom.... pour récupérer le mail qui vient d'arriver et le déplacer.



    A+

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 71
    Par défaut Tu peux être plus clair...
    S'il te plait je ne comprend po bien ce que tu m'explique tu peux être plus clair..
    Merci!

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Abonnes-toi à l'évènement NewMailEx et dans le delegate qui est généré, il y a un paramètre.

    Utilise ce paramètre et la méthode GetItemFrom... (je ne sais plus le nom exact) pour retrouver l'élement et le déplacer

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 71
    Par défaut Mon code mais..
    Voici mon code..
    Mais j'arrive pas à compiler
    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
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Text;
    using Outlook = Microsoft.Office.Interop.Outlook;
     
     
    namespace OutLookTest
    {
        class Program
        {
    		[STAThread]
    		static void Main(string[] args)
    		{
    			// Create an Outlook application object. 
                Outlook.Application outLookApp = new Outlook.ApplicationClass();
     
    			// Ring up the new message event.
                outLookApp.NewMailEx += new Outlook.ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx);
    			Console.WriteLine("Please wait for new messages...");
    			Console.ReadLine();
    		}
     
    		#region NewMail event handler. 
            private void outLookApp_NewMailEx(string entryIDCollection)
            {
                Outlook.ApplicationClass App = new Outlook.ApplicationClass();
                Outlook.NameSpace ns = App.GetNamespace("MAPI");
                Outlook.MailItem mail = null;
                object obj = null;
     
                try
                {
                    string[] ids = entryIDCollection.Split(',');
     
                    int i = 0;
                    obj = ns.GetItemFromID(ids[i], Type.Missing);
                    while (obj != null && i < ids.Length)
                    {
                        if (obj is Outlook.MailItem)
                        {
                            mail = obj as Outlook.MailItem;
                            Console.WriteLine(mail.Subject);
                        }
     
                        i++;
                        obj = ns.GetItemFromID(ids[i], Type.Missing);
                    }
                }
                catch (Exception) { }
            } 
    		#endregion
        }
    }

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 71
    Par défaut l'erreur que j'ai, après la compile
    Quand je compile j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'OutLookTest.Program.App_NewMailEx(string)'	D:\[Ax]\Projects\OutLookTest\OutLookTest\Program.cs	19	37	OutLookTest

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

Discussions similaires

  1. Ajout de menu dans outlook
    Par krfa1 dans le forum Outlook
    Réponses: 4
    Dernier message: 26/10/2005, 15h15
  2. Paramêtre de réponse dans outlook
    Par krfa1 dans le forum Outlook
    Réponses: 1
    Dernier message: 15/10/2005, 15h38
  3. heure dans outlook
    Par bourvil dans le forum Outlook
    Réponses: 12
    Dernier message: 14/10/2005, 16h00
  4. Automatiser la fonction export dans outlook
    Par sev54 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/02/2005, 14h49
  5. piece jointe à mettre dans outlook
    Par Tierisa dans le forum VBA Access
    Réponses: 52
    Dernier message: 21/10/2003, 15h32

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