当我在本地计算机上运行项目时,它会按预期生成Outlook电子邮件,但如果我将所有代码上传到我们的开发服务器,则运行时会出现此错误消息:[例外:无法创建ActiveX组件。] Microsoft.VisualBasic.Interaction.CreateObject(String ProgId,String ServerName)+509721 等...
我知道这是Outlook的失败,因为如果我评论sendmail()函数,页面的其余部分工作正常。 (它只是不创建电子邮件)。 本地计算机是安装了Outlook的Windows 7,服务器是2008R2,没有安装Office。我有其他页面可以写入Excel文件,但他们使用CrystalReports来处理它,所以我不确定服务器是否需要注册Outlook dll,或者是否还需要其他东西。
带有VB.Net代码隐藏的Aspx页面。我的创建电子邮件如下:
Dim OApp2 As Object, OMail2 As Object, signature2 As String
OApp2 = CreateObject("Outlook.Application")
OMail2 = OApp2.CreateItem(0)
Dim alAttachList As New ArrayList(2)
Dim iCounter As Integer
alAttachList.Insert(0, "E:\Test\DEBUG CODE.txt")
alAttachList.Insert(1, "\\RemoteServer\z\Test\Hello.bmp")
sBody += "<br />" + "Attached are some files." + "<br />" + "They can also be found in: X:\Test\Test\Name "
With OMail2
.Display()
End With
signature2 = OMail2.HTMLBody
With OMail2
.Subject = sSubject
.To = sTo
.CC = sCC
.HTMLbody = sBody & "<br /><br />" & signature2
End With
Dim sBodyLen As Integer = Int(sBody.Length)
Dim oAttachs2 As Interop.Outlook.Attachments = OMail2.Attachments
Dim oAttach2 As Interop.Outlook.Attachment
For iCounter = 0 To alAttachList.Count - 1
oAttach2 = oAttachs2.Add(Source:=alAttachList(iCounter), DisplayName:=alAttachList(iCounter))
Next
OMail2.Display(True)
OApp2 = Nothing
OMail2 = Nothing
答案 0 :(得分:1)
当您执行以下操作时:
OApp2 = CreateObject("Outlook.Application")
您正在使用随MS Office一起安装的Office.Interop库(如果您走这条路线,则使用各个应用程序)
您必须在服务器上安装MS Office或至少Outlook才能使用Office.Interop。您可能会考虑使用MAPI而不是互操作来发送电子邮件。 MAPI是.Net的一部分,不需要在您的服务器上安装其他程序。
答案 1 :(得分:0)
首先,必须安装Outlook。其次,您的代码是在服务(例如IIS)中运行的吗?不能从服务中使用Office应用程序(包括Outlook)。