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 :

[C#]Problème avec redemption


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut [C#]Problème avec redemption
    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); }
            }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    J'ai modifié quelques trucs dans le code, qui pouvait eventuellement posaient problème, et pourtant toujours le meme problème. J'ai rajouté dans les définitions de la classe

    et ensuite dans la void

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Items = fldInbox.Items;
                Items.ItemAdd += new IRDOItemsEvents_ItemAddEventHandler(Items_ItemAdd);
    car j'ai lu sur internet qu'on pouvait avoir des problème si on déclarait pas Items avant.

    Ensuite j'ai modifié ma méthode TraitementMail, pour voir si cela venait de la, mais non.

    Mais j'ai l'impression que c'est un problème lié aux méthodes IRDOItemsEvents de Redemption, car j'ai remplacé l'event ItemAdd, par ItemRemove, et j'ai toujours le meme problème, un freeze au moment ou je recoit le premier mail, pas quand je supprime, alors qu'il n'y a plus d'event itemAdd dans le code.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Par défaut
    Sinon il y a ClickYes.exe, c'est un petit programme qui clique automatiquement sur "Oui" lorsque la fenêtre de demande d'autorisation apparait. Mais c'est un peu de la bidouille, le mieux est de faire un composant certifié qu'on peut ensuite ajouter en tant que composant trusté d'Outlook.

Discussions similaires

  1. Problème avec Outlook Redemption
    Par lecyberax dans le forum C#
    Réponses: 5
    Dernier message: 10/09/2007, 17h49
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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