多个邮箱 - 访问“outlook”电子邮件帐户的“草稿”文件夹,而不使用文件夹名称作为字符串

时间:2015-09-23 07:55:53

标签: c# email outlook outlook-addin outlook-redemption

我使用Visual Studio 2013和Add-in express v.7.7.4087开发了一个outlook加载项。 我必须处理多个电子邮件帐户(商店)。请参阅以下快照和代码

enter image description here

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 ”的电子邮件帐户将草稿文件夹显示为“草稿(仅限此计算机)”< / strong>而不是“草稿”

我的工作正常。但我不想将其介绍给生产版本。我认为这对非英语环境不起作用。

  1. 你能否为我建议一个解决方案

  2. 在兑换(http://www.dimastr.com/redemption/home.htm)中,是否有解决方案?

  3. P.S

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

    oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts);

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

2 个答案:

答案 0 :(得分:1)

使用Store类的GetDefaultFolder方法。它允许获取一个Folder对象,该对象表示存储中的默认文件夹,并且是FolderType参数指定的类型。

此方法类似于GetDefaultFolder对象的NameSpace方法。区别在于此方法获取与该帐户关联的传递存储上的默认文件夹,而NameSpace.GetDefaultFolder返回当前配置文件的默认存储上的默认文件夹。

Redemption库提供RDOStore类的GetDefaultFolder方法。

答案 1 :(得分:1)

GetSharedDefaultFolder是要走的路 - 调用Namespace.CreateRecipient / Recipient.Resolve / Namespace.GetSharedDefaultFolder。