我们当前使用Microsoft.Office.Interop.Outlook来打开带有预格式化MailItem的Outlook。这样,用户可以在发送电子邮件之前更改任何信息。
搜索了Exchange WebServices,但没有找到等效项。
我尽可能地清理了下面的代码。我们想在用户桌面的当前版本的Outlook中打开一条消息。目前,我们已经在Prem和Office 2010上启用了Exchange,并且正在向云中的Office 2016和O365迁移。
Public Function OpenOutlookSendWithAttachment(ByVal Subject As String, ByVal Body As String, ByVal FileName As String) As Boolean
Dim bSuccess As Boolean = True
Dim OutlookApplication As Microsoft.Office.Interop.Outlook.Application
Dim OutlookMailItem As Microsoft.Office.Interop.Outlook.MailItem
Try
OutlookApplication = New Microsoft.Office.Interop.Outlook.Application
Try
If OutlookApplication.Session.Offline Then OutlookApplication.Session.Logon("", "", True, True)
Catch ex As Exception
End Try
OutlookMailItem = OutlookApplication.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem)
OutlookMailItem.Subject = Subject
OutlookMailItem.Body = Body & vbNewLine
OutlookMailItem.Attachments.Add(FileName)
OutlookMailItem.Display(True)
Catch ex As Exception
bSuccess = False
Finally
OutlookMailItem = Nothing
OutlookApplication = Nothing
End Try
Return bSuccess
End Function
寻找任何.Net方法来执行等效操作。
答案 0 :(得分:0)
除copyToOutputDirectory="true"
协议外,没有其他方法可以使用预格式化的电子邮件打开已安装的Outlook版本。所有Outlook版本的技术均相同。有关更多信息,请参见C# app automates Outlook (CSAutomateOutlook)。
答案 1 :(得分:0)
您可以使用mailto
链接(不支持附件)或创建MSG(二进制)或EML(MIME文本)文件:Outlook将很乐意打开并显示它。
在后一种情况(.EML文件)中,请不要忘记添加"X-Unsent: 1"
MIME标头来强制Outlook将邮件视为未发送并显示“发送”按钮。