通过Powershell和Outlook发送电子邮件

时间:2010-06-21 15:14:22

标签: email powershell outlook

我的文件系统上有一个.msg文件。使用PowerShell,我可以打开一个Outlook窗口,其中包含如下信息:

Invoke-Item "MY MAIL.msg"

如何通过Powershell更改主题并将其转发到给定地址?

提前致谢

3 个答案:

答案 0 :(得分:3)

你可以试试这样的东西,适用于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() 

答案 1 :(得分:3)

我们遇到了一个问题,需要从Outlook转发电子邮件,有3000封电子邮件要做。

Iain给出的答案让我走上了成功之路,谢谢。

然而,它对我来说不起作用,它失败了。我注意到你需要将转发方法保存到变量然后从中执行代码,下面是我完整的脚本,用于循环遍历文件夹中的每个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

答案 2 :(得分:0)

在PowerShell 2.0中,有一个Send-MailMessage cmdlet,允许您附加文件,指定主题和收件人,例如:

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

不确定.msg文件是如何播放的,但您可以尝试一下。