0

最近安装了一些新的 Office 2016,我与 Outlook 互操作以将文件附加到电子邮件的应用程序导致一些奇怪的 UI 效果阻止电子邮件被使用。它只发生在一小部分用户身上,但我找不到其他模式。

对于这些用户,在附加 PDF 时,效果如下: 奇怪的电子邮件用户界面 收件人/抄送/主题字段不合适,电子邮件窗口的其余部分无法键入/无法点击,唯一的方法是点击 Escape 并关闭窗户。使用相同的代码,除 PDF 之外的任何其他类型的文件都不会发生这种情况。

用于创建电子邮件和附件的代码非常简单,并且已经使用了多年

OutlookApplication = CreateObject("Outlook.Application")

'Create a new mailItem
MailItem = OutlookApplication.CreateItem(0) '0 = olMailItem

MailItem.Subject = "Super Important Email Subject v2.0"

'Loop through each file and attach to the MailItem
For Each FilePath As String In FilePaths
    'Attach the item to the MailItem
    MailItem.Attachments.Add(FilePath)
Next

MailItem.Display()

CreateObject 用于一些向后兼容性。

据我所知,我之前 2010 年和 2013 年的客户没有受到影响。

我试图禁用任何/所有插件无效

4

1 回答 1

-1

尝试使用这个:

Private Sub Send_Email_Outlook(sSubject As String, sBody As String, sTo As String, sCC As String, sFilename As String, sDisplayname As String)
    Dim oApp As Outlook.Application
    'If outlook is already running then'
    If IsAppRunning("Outlook.Application") = True Then
        'Get outlook object'
        oApp = GetObject(, "Outlook.Application")
    Else  'Else Create it'
        oApp = New Outlook.Application
    End If

    Dim ns As Outlook.NameSpace = oApp.GetNamespace("MAPI")
    Dim f As Outlook.MAPIFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox)
    Dim oMsg As Outlook.MailItem
    oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
    Dim oInspector As Outlook.Inspector = oMsg.GetInspector
    oApp.ActiveWindow.WindowState = FormWindowState.Minimized
    oMsg.Subject = sSubject
    oMsg.Body = sBody
    oMsg.To = sTo
    If sCC <> "" Then
        oMsg.CC = sCC
    End If
    If sFilename <> "" Then
        Dim sBodyLen As Integer = Int(sBody.Length)
        Dim oAttachs As Outlook.Attachments = oMsg.Attachments
        Dim oAttach As Outlook.Attachment
        For Each file1 In sFilename.Split(";")
            oAttach = oAttachs.Add(file1, , sBodyLen, sDisplayname)
        Next
    End If
    oMsg.Display()
    ns.SendAndReceive(False)
    If Not IsNothing(ns) Then Marshal.ReleaseComObject(ns)
    oMsg = Nothing
End Sub
于 2017-09-28T15:03:21.757 回答