所以我创建了一个脚本来解析outlook中的.msg文件,并省略了结果。整个脚本工作,除了当我从网络内部收到电子邮件(我们使用Active Directory)时,我得到的结果与此类似:/ O = Business / OU = FIRST ADMINISTRATIVE GROUP / CN = RECIPIENTS / CN = MIKEF 否则对于网络外的电子邮件,我会收到email@email.com。我想用正则表达式对此进行验证,这样就可以使用CN =“”中的名称并将其添加到我的@ email.com
$MSGFILEPATH = '\\srv01\FTP\EmailtoSupportPortal\Testing'
$MSGCOMPLETED= '\\srv01\FTP\EmailtoSupportPortal\Testing\Completed'
Function MSGFiles {
Get-ChildItem $MSGFILEPATH -Filter *.msg|`
ForEach-Object{
$outlook = New-Object -comobject outlook.application
$msg = $outlook.CreateItemFromTemplate($_.FullName)
$body = $msg.Body
$SEM = $msg.SenderEmailAddress
$Subject = $msg.Subject
$SEM
}
}
MSGFiles
答案 0 :(得分:0)
检查MailItem.SenderEmailType属性。如果是" EX",请使用MailItem.Sender.GetExchangeUser.PrimarySmtpAddress(准备处理空值/错误)。 否则,请按照现在的方式使用SenderEmailAddress属性。