我使用 Outlook Interop 迭代所有帐户:
var app = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application;
Microsoft.Office.Interop.Outlook._NameSpace _sessionNs = app.GetNamespace("MAPI");
foreach (Account account in _sessionNs.Accounts)
{
if (account != null)
{
var addressAccount = account.SmtpAddress;
//TODO How to check if is default?
}
}
我没有在Account对象上找到任何属性等来检查它是否是默认帐户。 我尝试将 account.Session.CurrentProfileName 与 app.DefaultProfile 进行比较,但这是默认配置文件,我希望将其用于具有不同帐户的相同配置文件。我也尝试了 GetDefaultFolder(FolderType:OlDefaultFolders.olFolderInbox) 但如果我更改 Outlook 中的默认值,则不会改变。
有什么想法吗?
更新(太晚了,我知道)
只需使用命名空间帐户集合中的第一个帐户。
在VBS中: 设置 oas=NameSpace.Accounts 调试.打印oas(1).显示名称
以编程方式创建一条新消息并获取其 SendUsingAccount 属性。这是默认帐户。