Надеюсь, кто-нибудь сможет помочь.Я пытаюсь автоматически сохранять электронные письма как .msg
файлы.Эти электронные письма являются запросами, которые отправляются публикой через онлайн-портал.В электронных письмах будет создан индексный файл, относящийся к нему, а затем загружен в систему EDM.Мне нужно сохранить письмо в его оригинальном формате, так как оно содержит личную / конфиденциальную информацию, которая не может быть подделана.Я делал нечто подобное раньше, но сохранял вложения, а не реальное письмо.
У меня было несколько попыток, и нижеприведенный скрипт - самый близкий, который я получил, но это поиск по «моему» адресу электронной почты по умолчанию, и янужно, чтобы прочитать хоть другой, возможно, несколько разных.Кто-нибудь знает, может ли это быть изменено для параметризации адреса электронной почты для поиска, хотя?
$DestinationPath = "c:\Support\files\"
$EmailAddress = "Application.Emails@donny.gov.uk"
#Removes invalid Characters for file names from a string input and outputs the clean string
Function Remove-InvalidFileNameChars
{
param
(
[Parameter(Mandatory=$true, Position=0)]
[String]$Name
)
return [RegEx]::Replace($Name, "[{0}]" -f ([RegEx]::Escape([String] [System.IO.Path]::GetInvalidFileNameChars())), '-')
}
#Add Interop Assembly
Add-type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null
#Type declaration for Outlook Enumerations
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$olSaveType = "Microsoft.Office.Interop.Outlook.OlSaveAsType" -as [type]
$olClass = "Microsoft.Office.Interop.Outlook.OlObjectClass" -as [type]
#Add Outlook Com Object, MAPI namespace, and set folder to the Inbox
$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNameSpace("MAPI")
#
$folder = $namespace.getDefaultFolder($olFolders::olFolderDrafts)
#$folder = $namespace.getDefaultFolder($olFolders::olFolderDrafts)
#Iterate through each object in the chosen folder
foreach ($email in $folder.Items)
{
#Get email's subject and date
[string]$subject = $email.Subject
[string]$sentOn = $email.SentOn
#Strip subject and date of illegal characters, add .msg extension, and combine
$fileName = Remove-InvalidFileNameChars -Name ($sentOn + "-" + $subject + ".msg")
#Combine destination path with stripped file name
$dest = $DestinationPath + $fileName
$email.SaveAs($dest, $olSaveType::olMSG)
}