我使用Visual Studio 2013和加載項express v.7.7.4087開發Outlook外接程序。 我必須處理多個電子郵件帳戶(商店)。請參閱以下快照和代碼多個郵箱 - 在不使用文件夾名稱作爲字符串的情況下訪問「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 "[email protected]" type email accounts
}
catch (Exception)
{
Debug.DebugMessage(3, "AddinModule : timerSendFromSaleswingsFolder_Tick : Excep");
draftsFolder = rootFolderFolders["Drafts (This computer only)"];
}
}
我需要訪問每個郵件帳戶的草稿文件夾,但電子郵件帳戶「XXXXXXX @outlook.com「顯示草稿文件夾爲「草稿(僅此計算機)「而不是」草稿「。
我爲我工作得很好。但我不想將其引入生產版本。成爲我認爲這不適用於非英語環境。
能否請你建議我爲
在贖回(http://www.dimastr.com/redemption/home.htm)的解決方案,是有一個解決方案?
P.S
我在我的一些項目
oFolder = oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDrafts)的使用該代碼;
但它給出了主郵件帳戶的草稿文件夾。在我的代碼中,這裏沒有「store」對象的這種方法。
它沒有爲我的商店對象提供GetDefaultFolder()方法。那麼我可以使用.NET Reflection引用更新的程序集並調用GetDefaultFolder()方法?謝謝 –
我試過這段代碼。它不適合我。請指教我,如果有道理https://dl.dropboxusercontent.com/u/9507668/reflection.PNG –