我们有一个vb.net windows应用程序,它创建一个Outlook.Application实例来打开一个电子邮件.MSG文件,并通过调用Outlook.Application SaveAs()方法将其保存为.HTML。
但是,有时调用.SaveAs()会导致出现弹出窗口,例如在保存经过数字签名的.MSG时,会出现一个确认弹出窗口。
此弹出窗口导致代码执行暂停,直到用户进行交互并在弹出窗口中单击“是”或“否”。由于我们的应用程序在服务器上运行并且不需要用户交互,因此会导致应用程序定期停止,直到技术人员登录到服务器并在弹出窗口中单击“是”。
有没有办法避免弹出,或者自动选择“是”? 我已经尝试调查Outlook.Application的文档,但当然MSDN上的文档非常缺乏。
以下是一些示例vb.net代码:
outlookapp = CreateObject("Outlook.Application")
Dim olItem As Object = outlookapp.CreateItemFromTemplate("C:\msg\message.msg")
olItem.SaveAs("C:\html\convertedmessage.html", 5)
如果对message.msg进行了数字签名,则在调用SaveAs()将其保存为HTML文件时,会弹出一个MSG经过数字签名的方法,这会暂停代码,直到您单击是或否。
注意:Outlook对象不支持Word对象的DisplayAlerts标志。
答案 0 :(得分:0)
首先,Outlook不适用于没有用户的服务或服务器端应用程序。
在您的特定情况下,您可以执行以下操作:
1使用扩展MAPI(仅限C ++或Delphi)打开MSG文件(OpenIMsgOnIStg等),然后在代码中显式构建HTML文件。
2解析MSG文件(格式为documented)或使用多个商业组件之一(例如Aspose中的一个)来读取MSG文件。
3使用Redemption及其RDOSession。GetMessageFromMsgFile
/ RDOMail。SaveAs(..., olHTML)
方法打开MSG文件并执行转换。
dim Session As RDOSession = CreateObject("Redemption.RDOSession")
dim Msg As RDOMail = Session.GetMessageFromMsgFile("C:\msg\message.msg")
Msg.SaveAs("C:\html\convertedmessage.html", 5)