从Office.Interop.Outlook迁移

时间:2019-08-14 19:26:22

标签: outlook outlook-vba office-interop com-automation

我们当前使用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方法来执行等效操作。

2 个答案:

答案 0 :(得分:0)

copyToOutputDirectory="true"协议外,没有其他方法可以使用预格式化的电子邮件打开已安装的Outlook版本。所有Outlook版本的技术均相同。有关更多信息,请参见C# app automates Outlook (CSAutomateOutlook)

答案 1 :(得分:0)

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

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