我正在尝试迭代具有特定主题行的电子邮件,并将匹配的电子邮件正文解析并传递给哈希数组。我如何处理导致问题的多个电子邮件正文存在问题。
$ol=New-Object -ComObject Outlook.Application
$ns=$ol.GetNameSpace('MAPI')
$inbox=$ns.GetDefaultFolder(6)
$Goodsubject='Interesting Email'
$mail = $InBox.items |
Where-Object{
$_.Unread -and $_.Subject -match $Goodsubject
#$_.Subject -match $Goodsubject
} |
Sort-Object ReceivedTime -Descending |
Select-Object Subject,ReceivedTime,Body,SenderName
# Select-Object Body
$mail | %{
$_.Body | %{$interestinghash = @{}} {
if ($_ -match "(.*): (.*)") {
$interestinghash[$matches[1]]=$matches[2];
}
}
假设电子邮件有4行,每行都有一个键:值,我看$interestinghash
,我只会有一个电子邮件的键值对。我不会全部4.也就是说,我可以替换以下行:
$mail | %{
$_.Body | %{$interestinghash = @{}} {
if ($_ -match "(.*): (.*)") {
$interestinghash[$matches[1]]=$matches[2];
}
}
使用:
$mail | %{$interestinghash = @{}} {
if ($_ -match "(.*): (.*)") {
$interestinghash[$matches[1]]=$matches[2];
}
}
如果我这样做,它会给我所有4个值,但只会查看1封电子邮件。我不确定我在这里做错了什么。