Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 通过Powershell和Outlook发送电子邮件_Email_Powershell_Outlook - Fatal编程技术网

Email 通过Powershell和Outlook发送电子邮件

Email 通过Powershell和Outlook发送电子邮件,email,powershell,outlook,Email,Powershell,Outlook,我的文件系统上有一个.msg文件。使用powershell,我可以打开一个Outlook窗口,并显示如下消息: Invoke-Item "MY MAIL.msg" 如何通过Powershell更改主题并将其转发到给定地址 提前感谢您可以尝试使用outlook 2010 $ol = New-Object -comObject Outlook.Application gm -InputObject $ol $mail = $ol.Session.OpenSharedItem("C:\Users\

我的文件系统上有一个.msg文件。使用powershell,我可以打开一个Outlook窗口,并显示如下消息:

Invoke-Item "MY MAIL.msg"
如何通过Powershell更改主题并将其转发到给定地址


提前感谢

您可以尝试使用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() 

在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文件,但您可以尝试一下。

我们遇到一个问题,需要从Outlook转发电子邮件,需要处理3000多封电子邮件

伊恩给我的答案引导我走向成功,所以谢谢你

然而,它并没有给我的工作,它失败了。我注意到,您需要将forward方法保存到一个变量,然后执行其中的代码,下面是我的完整脚本,用于循环遍历文件夹中的每个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(),只需导入这些注册表设置(可以另存为注册表文件):


您好,它可以工作,但我从outlook收到一些恼人的安全弹出窗口和消息,这使得使用此脚本对我的目的毫无用处,因为我需要大量转发数千封电子邮件。我在outlook 2010中没有收到此警告,但我知道您正在谈论的警告,在我之前的outlook interop工作中,我尝试实现了一个安全垫片,但没能让它起作用希望如此helps@Iain,您好,您现在知道Office 2007中是否存在此恼人的弹出窗口吗?你确定在2010年不在场吗?这不是意味着减少安全功能吗?你可以尝试签名脚本。另一个选择是尝试我上面提到的垫片。签名脚本不会起任何作用。您的选项列在“您尚未接受@Iain答案”(这似乎是正确的答案)中。我也遇到了同样恼人的弹出窗口(Office2003)。您是否以某种方式解决了Iain的答案或采用了任何替代解决方案?是否有任何最终解决方案包含完整的源代码示例?这非常有效!我正在使用Outlook 2013,只需将注册表路径更改为:HKEY\U CURRENT\U USER\Software\Policys\Microsoft\office\15.0\Outlook\security
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