【问题标题】:How to automate Outlook?如何自动化 Outlook?
【发布时间】:2016-11-19 03:40:22
【问题描述】:

我正在尝试从我们的 ERP 系统发送电子邮件。我尝试使用 SMTP,但它仅适用于内部邮件,而对于抱怨无法中继或其他问题的外部邮件则失败。我认为经理要么不想也不知道如何正确配置 Exchange。

所以我的老板告诉我使用 Outlook。问题是我的代码在调试中工作正常,但如果 Outlook 是打开的,它就会失败,几乎在所有情况下都会出现这种情况。我确实让它在修改供应商安装时起作用,但我们不希望这样做。我们正在使用 Intuitive ERP 8.5。它将其库文件存储在标准文件夹中,并且有一个自定义文件夹用于存放任何自定义代码或继承的供应商对象。

程序文件\IntuitiveERP.exe 程序文件\IntuitiveERP\自定义 程序文件\IntuitiveERP\标准

如果我将程序目录放在 C: 的根目录上,并结合标准和自定义文件夹,无论 Outlook 是打开还是关闭,代码都可以正常工作。我们不希望修改供应商的安装,因为这样可能会导致更新出现问题。

'Fails with Cannot create ActiveX component.
objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
'Fails with Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.
objOutlook = New Outlook.Application
mobjEmail = CType(objOutlook.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)

With mobjEmail
    .CC = strEmployeeEmail
    .Subject = String.Format(Constants.RFQ.Email.Subject, strRFQID)
    .To = strTo
    .Body = Constants.RFQ.Email.Body
    .Attachments.Add(String.Format(Constants.RFQ.Output.FullPath, strRFQID))
    .Display(True)
End With

知道如何在 Outlook 打开时获取对它的引用吗? 任何替代解决方案?

【问题讨论】:

  • 如果 SMTP 失败,是什么让您认为 Outlook 不会失败?
  • 不要使用 Outlook。这是一个黑客。然后需要在您的应用程序运行的任何地方安装 Outlook。使用 SMTP 并告诉他们在 Exchange 中配置中继。就是这样(老实说,这并不太棘手)。
  • @Ares -- 因为出于安全考虑,SMTP 要求在 Exchange 中“允许”显式中继,以防止恶意软件从您的服务器退回邮件。前景不同;它旨在在 AD 域设置中与 Exchange 一起使用,并且不使用 SMTP。
  • 如果它设计为使用 Outlook,则在安装 Office 或 Windows 更新时,它很容易被破坏。尽可能使用 SMTP 方法。
  • @Ares,因为我见证了 Outlook 的工作。

标签: .net vb.net email outlook


【解决方案1】:

你可以试试这个:

Try
    objOutlook = Marshal.GetActiveObject("Outlook.Application")
Catch ex As Exception
    objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
End Try

请注意,在 Visual Studio 中以管理员身份运行并在 Outlook 已在用户模式下运行时访问它时会出现问题。见this。尝试直接从 bin 文件夹运行 EXE(不要以管理员身份运行)。

【讨论】:

  • 谢谢,您指出了我遇到的问题之一。 ERP软件需要以管理员身份运行。获取对 Outlook 的引用(在用户模式下运行)失败。这就是如果先关闭 Outlook 就可以工作的原因。这可以帮助我让我的老板正确配置 Exchange。
猜你喜欢
  • 2015-04-27
  • 2013-08-23
  • 2010-12-12
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
相关资源
最近更新 更多