提问人:Hack Dawg 提问时间:11/7/2019 更新时间:11/7/2019 访问量:1206
在客户端打开带有附件的 Outlook 应用程序
Open Outlook Application on the Client-side with an Attachment
问:
我无法打开带有 Web 服务器附件的 Outlook 应用程序(客户端)。这是我的代码。有什么建议吗?
Dim app As Microsoft.Office.Interop.Outlook.Application
Dim appNameSpace As Microsoft.Office.Interop.Outlook._NameSpace
Dim memo As Microsoft.Office.Interop.Outlook.MailItem
Dim processes = System.Diagnostics.Process.GetProcessesByName("OUTLOOK")
Dim collCount As Integer = processes.Length
If collCount > 0 Then
app = Marshal.GetActiveObject("Outlook.Application")
memo = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
memo.Attachments.Add(Report, Outlook.OlAttachmentType.olByValue, , HttpContext.Current.Session("fileName"))
memo.Display()
Else
Try
app = New Microsoft.Office.Interop.Outlook.Application
appNameSpace = app.GetNamespace("MAPI")
Process.Start("OUTLOOK")
memo = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
memo.Attachments.Add(Report, Outlook.OlAttachmentType.olByValue, , HttpContext.Current.Session("fileName"))
memo.Display()
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
End If
答:
你不能 - 该代码将在服务器上运行,没有人会看到消息。无论如何,您都无法在服务器上运行 Outlook。
只有在 IE 中才能在客户端运行,并且仅当您的站点被标记为受信任时。
但是,您可以创建一个 MIME (EML) 文件,并让用户从浏览器下载它 - Outlook 将很乐意打开并显示它。若要确保它显示为未发送,请将 MIME 标头设置为 1。X-Unsent
ASP.NET 代码在服务器端运行,因此您至少应在那里安装 Outlook。您的代码永远不会在客户端运行。
我无法打开带有 Web 服务器附件的 Outlook 应用程序(客户端)。
所有当前版本的 Microsoft Office 都经过设计、测试和配置,可在客户端工作站上作为最终用户产品运行。它们假定交互式桌面和用户配置文件。它们不提供满足设计为无人参与运行的服务器端组件需求所需的重入性或安全性级别。
Microsoft 目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化 Microsoft Office 应用程序,因为 Office 在此环境中运行时可能会表现出不稳定的行为和/或死锁。
如果要生成在服务器端上下文中运行的解决方案,则应尝试使用已安全执行的组件,以便进行无人参与执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方法。如果从服务器端解决方案使用 Office 应用程序,则该应用程序将缺少成功运行的许多必要功能。此外,您将承担整体解决方案稳定性的风险。
有关详细信息,请参阅 Office 服务器端自动化的注意事项一文。
评论