Мне нужно написать скрипт powershell, который будет проходить через папку Outlook, извлекать идентификатор пользователя из URL-адреса в электронной почте и отправлять GET с идентификатором пользователя в новом URL-адресе.
Это хорошо дляэлектронные письма, которые просто пересылаются в почтовый ящик, но иногда они пересылаются как вложения.Я хотел бы открыть файл .msg, чтобы извлечь uid таким же образом, но я не могу найти способ сделать это без предварительного сохранения файла.
Моя первоначальная идея состояла в том, чтобы сохранитьфайл, откройте его, вытащите информацию, затем удалите .msg.Проблема заключается в том, что Outlook сохраняет экземпляр MSG-файла открытым, поэтому его нельзя удалить.Я мог бы сделать $ outlook.quit (), но тогда он закроет экземпляр Outlook, который я использую для просмотра остальных писем.
Я бы предпочел не сохранять всеОтдельно .msg отдельно в файле, а затем, если возможно, просмотреть все из них.
Можно ли просто прочитать тело файла .msg, как будто это просто еще одно сообщение электронной почты?
Вот мой код:
# Mailbox name
$mailbox = "abuse@place.com"
# Name of folder containing reported phishing emails
$folderName = "SelfPhishTest"
# Create the Outlook object to access mailboxes
$Outlook = New-Object -ComObject Outlook.Application;
# Grab the folder containing the emails from the phishing exercise
$Folder = $Outlook.Session.Folders($mailbox).Folders.Item($folderName)
# Grab the emails in the folder
$Emails = $Folder.Items
# Path to save attachments to
$filepath = "C:\SavedPhishEmails\"
# Run through each email in the folder
foreach($email in $Emails){
# Output Sender Name for Testing
Write-Host $email.SenderName
# The number of email attachments
$intCount = $email.Attachments.Count
# If the email has attachments, let's open the .msg email
if($intCount -gt 0) {
# Let's go through those attachments
for($i=1; $i -le $intCount; $i++) {
# The attachment being looked at
$attachment = $email.Attachments.Item($i)
# If this is a .msg, let's open it
if($attachment.FileName -like "*.msg"){
$attachmentPath = $filepath+$attachment.FileName
$attachment.SaveAsFile($attachmentPath)
Get-ChildItem $attachmentPath |
ForEach-Object {
$msg = $Outlook.Session.OpenSharedItem($_.FullName)
$msg.Body
}
Remove-Item $attachmentPath
}
}
}
}