none
c# outlook automation

    Discussion générale

  • Bonjour,

    je cherche à effacer les emails d'un .pst en fonction de l'adresse de l'expéditeur.

    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
    using Outlook = Microsoft.Office.Interop.Outlook;
    using System.Reflection;
    
    namespace HandlinPstTheCoolWay
    {
        public class retrieveSender
        {
            private static Guid g;
    
            private static void displaySenderPst(string pstFilePath, string pstName)
            {
                
                int nbEmails = 0;
                Outlook.Application App = new Outlook.Application();
                Outlook.NameSpace outlookNS = App.GetNamespace("MAPI");
                outlookNS.Logon("", "", Missing.Value, Missing.Value);
    
                //add .pst to default profile
                outlookNS.AddStore(pstFilePath + "\\" + pstName + ".pst");
    
               try
               {
                    Outlook.MAPIFolder rootfolder = outlookNS.Stores[pstName].GetRootFolder();
                    Outlook.Folders subFolders = rootfolder.Folders;
    
                    foreach (Outlook.Folder daFolder in subFolders)
                    {
                        var fi = daFolder.Items;
                        Console.WriteLine("dafolder's name=  " + daFolder.Name);
    
                        try
                        {
                            foreach (Outlook.MailItem email in fi)
                            {
                                string senderAddress = email.SenderEmailAddress;
                                nbEmails++;
                                if (senderAddress != null && senderAddress.Length > 3)
                                {
                                    Console.WriteLine("le sender name " + senderAddress);//+ "  le CC  "+ CCAdress);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            MessageBox.Show(e.Message);
                        }
                    }
                
              }
    
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    
                }
    
               
            }
    
            public static void laInterface(string pstFile, string pstName)
            {
                displaySenderPst(pstFile, pstName);
    
            }
            
    
    
        }
    }
    

    le problème, que la routine ne trouve qu'un nombre infime d'emails

    une idée

    cordialement

    jeudi 2 novembre 2017 16:39

Toutes les réponses

  • Bonjour,
    Je partage votre thread en parallèle pour complémenter l'information utile de votre question:
    c# outlook search email by senderAddress from .pst

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 3 novembre 2017 14:28
    Modérateur