通过Powershell和Outlook发送电子邮件

问题描述:

我的文件系统上有一个.msg文件。使用PowerShell我可以简单地这样的消息,打开Outlook窗口:通过Powershell和Outlook发送电子邮件

Invoke-Item "MY MAIL.msg" 

如何通过PowerShell的转移话题,并转发到指定的地址?

在此先感谢

+0

您还没有接受@Iain答案(这似乎是正确的答案)。我遇到了同样令人讨厌的弹出窗口(Office 2003)。你是否以某种方式解决Iain的答案或采取其他解决方案? – 2011-09-05 15:44:07

+0

有关完整源代码示例的最终解决方案? – Kiquenet 2013-02-12 07:13:38

你可以尝试这样的事情,与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("[email protected]") 
$Mail.Subject = "Test Mail" 
$Mail.Body = " Test Mail 22222 " 
$Mail.Send() 
+1

嗨,它的工作原理,但我得到了一些恼人的安全弹出窗口和来自Outlook的消息使使用这个脚本毫无用处我的目的,因为我需要大量转发成千上万的电子邮件 – pistacchio 2010-06-22 08:11:22

+1

我没有得到在Outlook 2010中的警告,但我知道你正在谈论的警告,在之前的前景互操作工作中,我尝试过实施安全垫片,但从未得到它的工作 http://msdn.microsoft.com/en-us/library/aa140152%28office.10 %29.aspx 希望这会有所帮助 – Iain 2010-06-22 08:38:31

+0

@Iain,您好,现在您是否在Office 2007中出现这个恼人的弹出窗口?你确定在2010年不存在吗?这不意味着减少安全功能? – 2011-09-05 15:42:40

在PowerShell 2.0中有一个发送-MAILMESSAGE的cmdlet,可以让你附加文件,指定一个主题,收件人如:

Send-MailMessage -smtpServer smtp.doe.com -from '[email protected]' ` 
       -to '[email protected]' -subject 'Testing' -attachment foo.txt 

不知道如何与.msg文件播放,但你可以给它一个尝试。

我们有一个问题,需要电子邮件从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('[email protected]') 
    $Forward.Send() 

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

#Close Outlook 
$Outlook.Quit() 

也注意到,如果你有应用到Outlook中的安全策略是运行此脚本阻止你,例如它会删除上的收件人添加(),只需导入这些注册表设置(可以保存为一个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 
+0

这工作得很好!我使用的是Outlook 2013,而我只需将注册表路径更改为:HKEY_CURRENT_USER \ Software \ Policies \ Microsoft \ office \ 15.0 \ outlook \ security – 2016-11-17 22:25:47