Je travaille sur une appli (pas un addin) qui doit recuperer des infos sur les nouveaux mails qui rentre dans un de mes dossiers publics. Parmi les taches de l'appli, il faut recuperer le Sendername. Comme il est en lecture seul il y a le message de sécurité outlook qui apparait, on peut desactiver ce message mais seulement pour 10 min. J'ai vu qu'on pouvait rajouter 'Redemption' afin d'eviter cette fenetre de sécurité.
Le code que j'avais avant marchait tres bien, mais une fois modifié pour l'adapter à redemption il ne marche plus. Le problème que j'ai, c'est quand je lance l'appli au premier nouveau mail qui arrive Outlook freeze et ma boite se bloque. Je ne peut recuperer l'utilisation de la boite que lorsque je ferme l'appli.
Je met les 2 codes, l'ancien et le nouveau (avec redemption) pour voir si y'a qqchose qui cloche.
J'ai deja regardé sur le site de redemption s'il parle de l'event ItemAddEventHandler, mais non, il parle uniquement de OnNewMail, event qui ne m'interesse pas car il est relié uniquement à mon dossier de reception par défaut.
Code sans redemption : 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 public void ReceptionMail(Outlook.Application o) { Outlook.MAPIFolder fldInbox; Outlook.NameSpace olNs; olNs = o.GetNamespace("MAPI"); fldInbox = olNs.GetDefaultFolder(Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders).Folders["Blabla"]; fldInbox.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); Console.WriteLine("Please wait for new messages..."); Console.ReadLine(); } private void Items_ItemAdd(object Item) { Outlook.PostItem myMail = null; try { if (Item is Outlook.PostItem) { myMail = (Outlook.PostItem)Item; TraitementMail(myMail); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
Code avec redemption : 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 public void ReceptionMail(Outlook.Application o) { RDOFolder fldInbox; Outlook.NameSpace olNs; olNs = o.GetNamespace("MAPI"); Redemption.RDOSessionClass rdoSession = new Redemption.RDOSessionClass(); rdoSession.MAPIOBJECT = olNs.MAPIOBJECT; fldInbox = rdoSession.GetDefaultFolder(rdoDefaultFolders.olPublicFoldersAllPublicFolders).Folders["Blabla"]; fldInbox.Items.ItemAdd += new IRDOItemsEvents_ItemAddEventHandler(Items_ItemAdd); Console.WriteLine(fldInbox.Items.Count); Console.WriteLine("Please wait for new messages..."); Console.ReadLine(); } public void Items_ItemAdd(object Item) { RDOMail myMail = null; try { if (Item is RDOMail) { myMail = ((RDOMail)Item); TraitementMail(myMail); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
Partager