我无法打开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
答案 0 :(得分:1)
ASP.NET代码在服务器端运行,因此您至少应在其中安装Outlook。您的代码永远不会在客户端上运行。
我无法打开Web服务器中带有附件的Outlook应用程序(客户端)。
所有当前版本的Microsoft Office都经过设计,测试和配置,可以作为最终用户产品在客户端工作站上运行。他们假定交互式桌面和用户个人资料。它们没有提供满足旨在无人值守运行的服务器端组件的需要所必需的可重入性或安全性级别。
Microsoft当前不建议并且不支持从任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)自动化Microsoft Office应用程序,因为Office可能表现出不稳定在这种环境中运行Office时的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用对无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果您从服务器端解决方案中使用Office应用程序,则该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。
在Considerations for server-side Automation of Office文章中了解有关此内容的更多信息。
答案 1 :(得分:0)
您不能-该代码将在服务器上运行,在那里没人会看到该消息。而且您仍然无法在服务器上运行Outlook。
仅当您的站点被标记为受信任时,才可以在IE上在客户端上运行。
但是,您可以创建一个MIME(EML)文件,并允许用户从浏览器中下载它-Outlook将很乐意打开并显示它。为了确保它显示为未发送,请将X-Unsent
MIME标头设置为1。