我刚刚开始尝试使用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。
发布于 2016-05-05 15:27:49
总会有至少一个账户--商店。否则Outlook将无法运行。但是,即使有邮件帐户,您如何知道它们是否被适当地配置?除非您接管消息提交,否则您无法提前知道。
UPDATE:循环遍历Namespace.Accounts集合并查找Account.AccountType == olExchange、olImap、olPop3、olHttp的帐户。请记住,OOM只列出邮件帐户,而不是存储或通讯簿。
如果您正在使用Extended (C++或Delphi),您可以使用IOlkAccountManager::EnumerateAccounts(CLSID_OlkMail, ...) (您可以在OutlookSpy (我是它的作者)中使用该接口-单击IOlkAccountManager按钮)。如果扩展的MAPI不是选项,赎罪 (我也是它的作者)公开RDOAccounts对象;它的GetOrder(acMail)方法将返回所有邮件帐户。您只需要检查返回的集合是否包含任何元素。
https://stackoverflow.com/questions/37053244
复制相似问题