将 Outlook 代码从 VBScript 转换为 C#
Converting Outlook code from VBScript to C#
我正尝试在 C# 中为以下代码编写等效代码。
Set objApp = CreateObject("Outlook.Application")
Set objNS = CreateObject("Redemption.RDOSession")
objNS.Logon "appsystemacc", "App@12345", False, False
objNS.MAPIOBJECT = objApp.Session.MAPIOBJECT
EntryID = "someValue"
StoreID = "someValue2"
Set olFolder = objNS.GetFolderFromID(EntryID,StoreID)
到目前为止,我已转换为以下代码,但在 GetFolderFromID()
行调试时出现 "Operation failed" 错误:
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon("appsystemacc", "App@12345", false, false);
var EntryID = "someValue";
var StoreID = "someValue2";
var folderID = oNS.GetFolderFromID(EntryID, StoreID);
我也想知道为什么要用Redemption.RDOSession
?是否用于从 Outlook 获取所有电子邮件类型?
您可以循环访问文件夹集合并找到请求的文件夹,这是一种方法。请阅读代码内的评论:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace outlook
{
class Program
{
static void Main(string[] args)
{
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon("appsystemacc", "App@12345", false, false);
// THE FOLDER YOU WISH TO FIND
Outlook.MAPIFolder MySomeValueFolder = null;
// USE THIS TO INDICATE IF FOUND
bool IsFound = false;
Microsoft.Office.Interop.Outlook._Folders oFolders;
Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolder =
oNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;
// Folders at Inbox level
oFolders = oPublicFolder.Folders;
foreach (Microsoft.Office.Interop.Outlook.MAPIFolder Folder in oFolders)
{
// OPTIONAL:
// if(Folder.Name == "somevalue") { ... }
if (Folder.EntryID == "someValue")
{
Console.Write(Folder.Name + " " + Folder.StoreID);
MySomeValueFolder = Folder;
IsFound = true;
}
}
if (IsFound)
{
// now do with MySomeValueFolder whatever you want
}
Console.ReadLine();
}
}
}
我正尝试在 C# 中为以下代码编写等效代码。
Set objApp = CreateObject("Outlook.Application")
Set objNS = CreateObject("Redemption.RDOSession")
objNS.Logon "appsystemacc", "App@12345", False, False
objNS.MAPIOBJECT = objApp.Session.MAPIOBJECT
EntryID = "someValue"
StoreID = "someValue2"
Set olFolder = objNS.GetFolderFromID(EntryID,StoreID)
到目前为止,我已转换为以下代码,但在 GetFolderFromID()
行调试时出现 "Operation failed" 错误:
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon("appsystemacc", "App@12345", false, false);
var EntryID = "someValue";
var StoreID = "someValue2";
var folderID = oNS.GetFolderFromID(EntryID, StoreID);
我也想知道为什么要用Redemption.RDOSession
?是否用于从 Outlook 获取所有电子邮件类型?
您可以循环访问文件夹集合并找到请求的文件夹,这是一种方法。请阅读代码内的评论:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace outlook
{
class Program
{
static void Main(string[] args)
{
Outlook.Application oApp = new Outlook.Application();
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
oNS.Logon("appsystemacc", "App@12345", false, false);
// THE FOLDER YOU WISH TO FIND
Outlook.MAPIFolder MySomeValueFolder = null;
// USE THIS TO INDICATE IF FOUND
bool IsFound = false;
Microsoft.Office.Interop.Outlook._Folders oFolders;
Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolder =
oNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;
// Folders at Inbox level
oFolders = oPublicFolder.Folders;
foreach (Microsoft.Office.Interop.Outlook.MAPIFolder Folder in oFolders)
{
// OPTIONAL:
// if(Folder.Name == "somevalue") { ... }
if (Folder.EntryID == "someValue")
{
Console.Write(Folder.Name + " " + Folder.StoreID);
MySomeValueFolder = Folder;
IsFound = true;
}
}
if (IsFound)
{
// now do with MySomeValueFolder whatever you want
}
Console.ReadLine();
}
}
}