【发布时间】: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 的工作。