如何通过 PowerShell 从 Outlook 文件夹中的电子邮件中获取电子邮件地址?
How to get email address from the emails inside an Oulook folder via PowerShell?
我有一个 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
return 都不是该电子邮件的 To
或 CC
的电子邮件地址,而是我得到了人的解析名称,例如:
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
我更改了号码和代码以保护隐私,但这就是我得到的 return。 那么,如何获得给定电子邮件草稿的收件人的正确电子邮件地址?
我认为您需要使用 PropertyAccessor。
$PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
$smtpAddress = $recip.PropertyAccessor.GetProperty($PR_SMTP_ADDRESS)
看这里(警告!VBA):https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/obtain-the-e-mail-address-of-a-recipient
我有一个 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
return 都不是该电子邮件的 To
或 CC
的电子邮件地址,而是我得到了人的解析名称,例如:
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
我更改了号码和代码以保护隐私,但这就是我得到的 return。 那么,如何获得给定电子邮件草稿的收件人的正确电子邮件地址?
我认为您需要使用 PropertyAccessor。
$PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
$smtpAddress = $recip.PropertyAccessor.GetProperty($PR_SMTP_ADDRESS)
看这里(警告!VBA):https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/obtain-the-e-mail-address-of-a-recipient