我刚开始涉足使用Microsoft.Office.Interop.Outlook。我能够使用下面的代码成功发送电子邮件。
public void Send()
{
try
{
Outlook._Application _app = new Outlook.ApplicationClass();
var test = _app.CreateItem(Outlook.OlItemType.olMailItem);
Outlook.MailItem mail = (Outlook.MailItem) _app.CreateItem(Outlook.OlItemType.olMailItem);
mail.To = "testemail@fakeaddress.com";
mail.Subject = "Test Outlook Subject";
mail.Body = "Test Outlook Body";
mail.Importance = Outlook.OlImportance.olImportanceNormal;
((Outlook.MailItem) mail).Send();
}
catch
{
Notification.Notice("Error");
}
}
我希望在try / catch之前有一个Validate()
函数,以便它检查是否启用了有效的Outlook帐户。请问有谁知道如何设置任何Outlook账户?
我试过这个
public bool validate()
{
Outlook._Application _app = new Outlook.ApplicationClass();
Outlook.Accounts accounts = _app.Session.Accounts;
return accounts.Count > 0;
}
但是,即使我删除了我的Outlook帐户,accounts.Count也返回1。
答案 0 :(得分:1)
总会有至少一个帐户 - 商店。否则Outlook不会运行。但即使有邮件帐户,您如何知道它们是否配置正确?除非您接管邮件提交,否则您无法提前知道。
更新:遍历Namespace.Accounts集合,查找Account.AccountType
== olExchange,olImap,olPop3,olHttp的帐户。如果您使用的是扩展MAPI(C ++或Delphi),则可以使用IOlkAccountManager::EnumerateAccounts(CLSID_OlkMail, ...)
(您可以在OutlookSpy中使用该界面 - 单击IOlkAccountManager按钮)。如果扩展MAPI不是一个选项,Redemption会公开RDOAccounts对象;其GetOrder(acMail)
方法将返回所有邮件帐户。您只需要检查返回的集合是否包含任何元素。