我正在尝试从我们的ERP系统发送电子邮件。我尝试使用SMTP但它只适用于内部邮件,并且因外部邮件抱怨无法中继或其他内容而失败。我认为经理要么不想或不知道如何正确配置Exchange。
所以我的老板告诉我使用Outlook。问题是我的代码在调试中工作正常,但如果Outlook打开则会失败,几乎在所有情况下都会如此。我确实通过修改供应商安装来实现它,但我们宁愿不这样做。我们正在使用Intuitive ERP 8.5。它将库文件存储在标准文件夹中,并且有一个自定义文件夹,用于任何自定义代码或继承的供应商对象。
Program Files \ IntuitiveERP.exe Program Files \ IntuitiveERP \ Custom Program Files \ IntuitiveERP \ Standard
如果我将程序目录放在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的引用? 任何替代解决方案?
答案 0 :(得分:2)
你可以试试这个:
Try
objOutlook = Marshal.GetActiveObject("Outlook.Application")
Catch ex As Exception
objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
End Try
请注意,在Visual Studio中以管理员身份运行并在Outlook已在用户模式下运行时访问Outlook时会出现问题。见this。尝试直接从bin文件夹运行EXE(不要以管理员身份运行)。