如何通过PowerShell从Outlook文件夹中的电子邮件获取电子邮件地址?

5

我有一个Outlook文件夹,我们称之为LoremIpsum,其中有1000多个电子邮件草稿,我想通过PowerShell枚举并进行一些过滤。我已经可以使用以下脚本访问该文件夹并查看电子邮件:

Function HandleRemaining {
    [CmdletBinding()]
    Param()

    BEGIN {
        Clear-Host
    }

    PROCESS {
        $outlook = New-Object -ComObject outlook.application
        $mapi = $outlook.getnamespace("MAPI");

        $email = $mapi.Folders.Item(1).Folders.Item('LoremIpsum').Items(1)

        foreach ($recip in $email.Recipients) {
           $recip 
        }

        $email.To
        $email.CC
    }

    END {
    }
}

HandleRemaining

问题在于,$recip$email.To都不返回电子邮件的ToCC地址,而是返回收件人解析后的名称,例如:
Application           : Microsoft.Office.Interop.Outlook.ApplicationClass
Class                 : 4
Session               : Microsoft.Office.Interop.Outlook.NameSpaceClass
Parent                : System.__ComObject
Address               : /o=ExchangeLabs/ou=Exchange Administrative Group (ALPHA-NUMERIC)/cn=Recipients/cn=LONG-ALPHANUMERIC-HERE
AddressEntry          : System.__ComObject
AutoResponse          : 
DisplayType           : 0
EntryID               : <snip>
Index                 : 1
MeetingResponseStatus : 0
Name                  : John Walker
Resolved              : True
TrackingStatus        : 0
TrackingStatusTime    : 01-Jan-01 00:00:00
Type                  : 1
PropertyAccessor      : System.__ComObject
Sendable              : True

John Walker

为保护隐私,我更改了数字和代码,但我得到的是这个结果。 那么,如何获取特定电子邮件草稿的收件人的正确电子邮件地址?

1个回答

6

天啊。我讨厌你,微软,看看这些不光彩的东西,但事实上这就是奏效的方法。太感谢你了!你应该编辑你的帖子,在 PR_SMTP_ADDRESS 前面加上 $ - JChris
如果将来有帮助到其他人的话,更多的属性/模式可以在这里找到:https://dev59.com/e6Pia4cB1Zd3GeqP27p5#45296809 - JohnLBevan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接