Отправить письмо через Powershell и Outlook - PullRequest
2 голосов
/ 21 июня 2010

У меня есть файл .msg в моей файловой системе.С PowerShell я могу открыть окно Outlook с сообщением просто так:

Invoke-Item "MY MAIL.msg"

Как изменить тему и переслать ее по указанному адресу через Powershell?

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 28 августа 2014

У нас была проблема, которая требовала пересылки электронной почты из Outlook, было 3000 ~ электронных писем.

Ответ, который дал Иэн, привел меня к успеху, так что спасибо.

Однако это не сработало для меня, как дано, не удалось.Я заметил, что вам нужно сохранить метод пересылки в переменную и затем выполнить код из этого, ниже приведен мой полный скрипт для циклического прохождения каждого файла msg в папке и его пересылки человеку.

Я также оставил тему как есть и не дал тела, так как в этом не было необходимости.

#Open Outlook and get a list of emails to forward
$Outlook = New-Object -comObject Outlook.Application 
$Emails = Get-ChildItem -Path C:\Users\APerson\Documents -Filter *.msg

#Loop through each email and open it up
Foreach($Email IN $Emails){
    $Message = $Outlook.Session.OpenSharedItem($($Email.FullName))
    $Forward = $Message.Forward()
    $Forward.Recipients.Add('a.person@gmail.com') 
    $Forward.Send()

    #Sleep is optional :D
    Start-Sleep -Seconds 1
}

#Close Outlook
$Outlook.Quit()

Также заметил, что к Outlook применена политика безопасности, которая мешает запуску этого сценария, напримерудалит Add () на получателях, просто импортируйте эти параметры реестра (можно сохранить как файл reg):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Policies\Microsoft\office\14.0\outlook\security]
"PromptOOMSend"=dword:00000002
"PromptOOMAddressBookAccess"=dword:00000002
"PromptOOMAddressInformationAccess"=dword:00000002
"PromptOOMMeetingTaskRequestResponse"=dword:00000002
"PromptOOMSaveAs"=dword:00000002
"PromptOOMFormulaAccess"=dword:00000002
"PromptSimpleMAPISend"=dword:00000002
"PromptSimpleMAPINameResolve"=dword:00000002
"PromptSimpleMAPIOpenMessage"=dword:00000002
3 голосов
/ 21 июня 2010

Вы можете попробовать что-то вроде этого, работает с Outlook 2010

$ol = New-Object -comObject Outlook.Application 
gm -InputObject $ol
$mail = $ol.Session.OpenSharedItem("C:\Users\fred\Desktop\Test Email Subject.msg")
$mail.Forward()
$Mail.Recipients.Add("fred@bloggs.com") 
$Mail.Subject = "Test Mail" 
$Mail.Body = " Test Mail 22222 "
$Mail.Send() 
0 голосов
/ 22 июня 2010

В PowerShell 2.0 есть командлет Send-MailMessage, который позволяет прикреплять файлы, указывать тему и получателя, например:

Send-MailMessage -smtpServer smtp.doe.com -from 'joe@doe.com' `
                 -to 'jane@doe.com' -subject 'Testing' -attachment foo.txt

Не уверен, как это воспроизводится с файлами MSG, но вы можетеэто попытка.

...