0

我们目前使用 Microsoft.Office.Interop.Outlook 来打开带有预格式化 MailItem 的 Outlook。这样用户就可以在发送电子邮件之前更改任何信息。

已搜索 Exchange WebServices,但未找到等效项。

我尽可能地清理了下面的代码。我们想在我们的用户桌面上的当前版本的 Outlook 中打开一条消息。目前,我们有 Exchange on prem 和 Office 2010,我们正在迁移到云中的 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 方法来执行等效操作。

4

2 回答 2

0

除了mailto协议之外,没有其他方法可以使用预先格式化的电子邮件打开已安装的 Outlook 版本。所有 Outlook 版本的技术都保持不变。有关详细信息,请参阅C# 应用程序自动化 Outlook (CSAutomateOutlook)

于 2019-08-14T19:44:07.203 回答
0

您可以使用mailto链接(不支持附件)或创建 MSG(二进制)或 EML(MIME 文本)文件:Outlook 将很乐意打开并显示它。

在后一种情况下(.EML 文件),不要忘记添加"X-Unsent: 1"MIME 标头以强制 Outlook 将邮件视为未发送并显示“发送”按钮。

于 2019-08-14T20:13:52.303 回答