多个邮箱 - 在不使用文件夹名称作为字符串的情况下访问 "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"。
我工作得很好。但我不喜欢将此引入生产版本。因为我认为这不适用于非英语环境。
你能给我一个解决方案吗
救赎中(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.
我使用 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"。
我工作得很好。但我不喜欢将此引入生产版本。因为我认为这不适用于非英语环境。
你能给我一个解决方案吗
救赎中(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.