我使用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 ”的电子邮件帐户将草稿文件夹显示为“草稿(仅限此计算机)”< / strong>而不是“草稿”。
我的工作正常。但我不想将其介绍给生产版本。我认为这对非英语环境不起作用。
你能否为我建议一个解决方案
在兑换(http://www.dimastr.com/redemption/home.htm)中,是否有解决方案?
P.S
我在我的一些项目中使用过这段代码
oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts);
但它提供了主邮件帐户的草稿文件夹。在我的代码中,这里没有“store”对象的这种方法。
答案 0 :(得分:1)
使用Store类的GetDefaultFolder方法。它允许获取一个Folder对象,该对象表示存储中的默认文件夹,并且是FolderType参数指定的类型。
此方法类似于GetDefaultFolder
对象的NameSpace
方法。区别在于此方法获取与该帐户关联的传递存储上的默认文件夹,而NameSpace.GetDefaultFolder
返回当前配置文件的默认存储上的默认文件夹。
Redemption库提供RDOStore类的GetDefaultFolder
方法。
答案 1 :(得分:1)
GetSharedDefaultFolder是要走的路 - 调用Namespace.CreateRecipient / Recipient.Resolve / Namespace.GetSharedDefaultFolder。