我正在迈出 VSTO 开发的第一步,因为我想创建一个 Outlook 插件来检索 IMAP 帐户的配额信息。 基本上我需要将
QUOTAROOT
命令发送到 IMAP 服务器并解析结果。
在 C# 中,这非常容易使用,例如 这个库。
但是,为了避免配置帐户两次,我想使用已配置的帐户连接到 IMAP 服务器。
我知道我可以通过 Outlook 帐户发送电子邮件,但我找不到有关直接与 IMAP 服务器交互的信息。
有没有办法做到这一点,要么通过 Outlook 建立的连接(即不直接读取凭据),要么通过读取凭据并自己创建连接?
我也可以像 Nirsoft MailPassView 那样搞乱注册表,但我想使用更官方的方式。
谢谢你。
Outlook 对象模型不公开任何 IMAP4/SMTP 特定信息。在扩展 MAPI 级别(仅限 C++ 或 Delphi),连接信息存储在相应的 IOlkAccount 对象中 - 如果单击 IOlkAccountManager
按钮,您可以在
OutlookSpy(我是其作者)中看到数据。 OOM 通过 Account.
IOlkAccount
属性公开该 MAPI 对象(仅在 C++ 或 Delphi 中可用)。账户密码已加密。
如果使用 Redemption 是一个选项(我也是它的作者),它会通过 RDOIMAPAccount 对象公开 IMAP4/SMTP 特定帐户数据(包括服务器、用户名和密码)
在 VBA 中:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set Accounts = Session.Accounts
for each Account in Accounts
if Account.AccountType = 0 Then 'atPOP3
Debug.Print "POP3/SMTP account " & Account.Name & ": " & Account.POP3_Server & ", " & Account.POP3_UserName
end if
if Account.AccountType = 1 Then 'atIMAP
Debug.Print "IMAP/SMTP account " & Account.Name & ": " & Account.IMAP_Server & ", " & Account.IMAP_UserName
end if
next