多个邮箱 - 在不使用文件夹名称作为字符串的情况下访问 "outlook" 电子邮件帐户的 "drafts" 文件夹

Multiple MailBoxes - Access "drafts" folder of "outlook" email account without using the folder name as a string

我使用 Visual studio 2013 和 Add-in express v.7.7.4087 开发了一个 outlook 加载项。 我必须处理多个电子邮件帐户(商店)。请看下面的截图和代码

private void timerSendFromDraftsFolder_Tick(object sender, EventArgs e)
        {
            Outlook.Stores stores = null; // CC and OL accounts, 
            Outlook.Store store = null;
            Outlook.MAPIFolder rootFolder = null;
            Outlook.Folders rootFolderFolders = null;
            Outlook.MAPIFolder draftsFolder = null;
            Outlook.Items items = null;
            Outlook.MailItem mailItem = null;

            bool itemSent = true;
            bool allMailItemsSent = true;

            try
            {
                if (Helper.IsOnline())
                {
                    Debug.DebugMessage(3, "AddinModule : timerSendFromSaleswingsFolder_Tick : Fired");

                    string version = OutlookApp.Version;
                    if (String.Compare(version, "13") > 0)
                    {
                        stores = Globals.ObjNS.Stores;
                        for (int i = 1; i <= stores.Count; i++)
                        {
                            try
                            {
                                store = stores[i];
                                string storeName = store.DisplayName;
                                if (store.ExchangeStoreType != Outlook.OlExchangeStoreType.olExchangePublicFolder)
                                {                                    
                                    rootFolder = store.GetRootFolder();
                                    rootFolderFolders = rootFolder.Folders;
                                    if (rootFolderFolders != null)
                                    {
                                        try
                                        {
                                            draftsFolder = rootFolderFolders["drafts"]; // not working for "xxxxxxx@outlook.com" type email accounts
                                        }
                                        catch (Exception )
                                        {
                                            Debug.DebugMessage(3, "AddinModule : timerSendFromSaleswingsFolder_Tick : Excep");
                                            draftsFolder = rootFolderFolders["Drafts (This computer only)"];
                                        }
                                    }

我需要访问每个邮件帐户的草稿文件夹,但是“xxxxxxx@outlook.com”的电子邮件帐户显示草稿文件夹为 "Drafts (This computer only)" 而不是 "drafts"

我工作得很好。但我不喜欢将此引入生产版本。因为我认为这不适用于非英语环境。

  1. 你能给我一个解决方案吗

  2. 救赎中(http://www.dimastr.com/redemption/home.htm),请问有解决办法吗?

P.S

我在我的一些项目中使用过此代码

o文件夹 = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts);

但它给出了主邮件帐户的草稿文件夹。在我的代码中,这里没有“store”对象的这种方法。

改为使用 Store class 的 GetDefaultFolder 方法。它允许获取一个 Folder 对象,该对象代表商店中的默认文件夹并且属于 FolderType 参数指定的类型。

这个方法类似于NameSpace对象的GetDefaultFolder方法。不同之处在于此方法获取与帐户关联的交付商店上的默认文件夹,而 NameSpace.GetDefaultFolder returns 当前配置文件的默认商店上的默认文件夹。

Redemption 库提供 RDOStore class 的 GetDefaultFolder 方法。

GetSharedDefaultFolder 是方法 - 调用 Namespace.CreateRecipient / Recipient.Resolve / Namespace.GetSharedDefaultFolder.