Я работаю над надстройкой Outlook и недавно переключился на С# для ознакомления (в душе я человек Java). На данный момент я просто пытаюсь просмотреть почтовую папку и вывести тему каждого сообщения на консоль, в основном, чтобы убедиться, что пока все работает нормально. Однако всякий раз, когда я запускаю его, я получаю следующую ошибку:
Не удалось завершить операцию. Одно или несколько значений параметра недействительны.
Текст исключения:
System.ArgumentException: не удалось завершить операцию. Одно или несколько значений параметра недействительны. в Microsoft.Office.Interop.Outlook.NameSpaceClass.GetFolderFromID(String EntryIDFolder, Object EntryIDStore) в OutlookAddIn2.ThisAddIn.ThisAddIn_Startup(отправитель объекта, EventArgs e) в Microsoft.Office.Tools.AddInImpl.OnStartup() в Microsoft.Office.Tools .AddInImpl.AddInExtensionImpl.Microsoft.Office.Tools.EntryPoint.OnStartup() в Microsoft.Office.Tools.AddInBase.OnStartup() в OutlookAddIn2.ThisAddIn.FinishInitialization() в Microsoft.Office.Tools.AddInBase.Microsoft.Office.Tools .EntryPoint.FinishInitialization() в Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases executePhases) в Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime .Interop.IExecuteCustomization2.ExecuteEntryPoints()
Загруженные сборки:
Я несколько сбит с толку этим, так как это точный метод, рекомендованный Microsoft в MSDN, чтобы пользователь мог выбрать папку. Я включил свой источник, пожалуйста, дайте мне знать, если у вас есть какие-либо мысли. Спасибо, что нашли время, чтобы прочитать этот пост, и за желание помочь!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
namespace OutlookAddIn2
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
//Get application namespace and grab the original folder object
Outlook.Folder pickFolder = (Outlook.Folder)Application.Session.PickFolder();
//Outlook.Folder mrFolder = Application.Session.GetFolderFromID(pickFolder.EntryID, pickFolder.StoreID) as Outlook.Folder;
foreach (Outlook.MailItem oMailItem in pickFolder.Items)
{
Console.WriteLine(oMailItem.Subject);
}
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}