发件人,SenderEmailAddress缺少Folder.Items

问题描述 投票:1回答:1

我想从Outlook电子邮件中下载附件。

这是我用来检索电子邮件的代码。

Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders(botMailFolder)

i = 1

For Each OutlookMail In Folder.Items
    If InStr(OutlookMail.Subject, " ") <> 0 Then

        If OutlookMail.Attachments.Count > 0 Then

            Dim folderBase As String
            folderBase = botLocalFolder

            Dim newFolder As String
            newFolder = folderBase & OutlookMail.EntryID

            'OutlookItem.SenderAddress

            If Not FolderExists(newFolder) Then
                FolderCreate newFolder
            End If

            For Each a In OutlookMail.Attachments
                Dim newFileName As String
                newFileName = newFolder & "\" & a.DisplayName
                'MsgBox newFileName
                a.SaveAsFile newFileName
            Next

        End If

    End If

Next OutlookMail

问题是,SenderSenderEmailAddressSenderName为空。仅SenderEmailType被填充为EX

该代码作为Excel宏执行,我的所有发件人(用户)都是Exchange 2013用户。

我如何找到电子邮件项目发件人的电子邮件地址和名称?

这是我在本地人窗口中看到的内容。Locals window capture

[此情况适用于框中的所有电子邮件。有人告诉我,这是因为所有人都是“交换用户”,企业管理员可以为他们设置限制。

excel vba outlook-vba
1个回答
0
投票

我也有这个问题。我可以克服的唯一方法是在OUTLOOK VBA中运行代码(Outlook->开发人员选项卡-> vba),而不要专门将应用程序作为Outlook应用程序启动。

示例:

Dim olApp As Outlook.Application
Set olApp = CreateObject(Outlook.Application)

需要成为

Dim olApp As Application
Set olApp = Application

技巧是不要从外部Outlook(在Excel中为IE)打开Outlook的新实例。如果您具有任何类型的Outlook Exchange安全设置,则从excel中打开Outlook将禁止您访问关键信息,例如发件人。

© www.soinside.com 2019 - 2024. All rights reserved.