本文介绍了如何通过PowerShell从Oulook文件夹内的电子邮件中获取电子邮件地址?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Outlook文件夹,我们将其称为LoremIpsum,在这里我有1000多个电子邮件草稿,我想对其进行加密并通过PowerShell进行一些过滤.我可以使用以下脚本访问该文件夹并已查看电子邮件:

I have an Outlook folder, let's call it LoremIpsum, where I have more than 1000+ email drafts that I want to enumarate and do some filtering via PowerShell. I can access the folder and see the emails already, using this script:

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的电子邮件地址,而是我得到此人的解析名称,例如:

The problem is that neither $recip nor $email.To return the email address of the To or CC of that email, instead I get the person's resolved name, example:

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

我更改了数字和代码以保护隐私,但这就是我得到的回报. 那么,如何获得给定电子邮件草稿的收件人的正确电子邮件地址?

I changed the numbers and codes to preserve privacy, but that's the return I get. So, how can I get the proper emaill address of the recipients of a given email draft?

推荐答案

我认为您需要使用PropertyAccessor.

I think you need to use the PropertyAccessor.

$PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
$smtpAddress = $recip.PropertyAccessor.GetProperty($PR_SMTP_ADDRESS)

请参阅此处(警告!VBA): https://msdn.microsoft.com/zh-CN/VBA/Outlook-VBA/articles/ob-the-e-mail-address-of-a-recipient

See here (Warning! VBA): https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/obtain-the-e-mail-address-of-a-recipient

这篇关于如何通过PowerShell从Oulook文件夹内的电子邮件中获取电子邮件地址?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-25 08:10