2015-04-01 70 views
1

我使用powershell从Outlook发送电子邮件(完成自动过程)。这适用于默认邮箱。我在开发网络中有很多限制,不能使用Outlook和PowerShell以外的任何软件。使用powershell发送电子邮件与不同发件人地址

我的问题是:是否有一种方法可以使用powershell (在我的Outlook中有三个帐户A,B和C)在Outlook中从其他帐户发送电子邮件,即使我有一个预定义的帐户。

我使用的代码是这样的。

$o = New-Object -com Outlook.Application 
$mail = $o.CreateItem(0) 
$mail.importance = 2 
$mail.subject = "SUBJECT" 
$mail.body = "BODY" 
$mail.To = "[email protected];" 
$mail.Send() 

有一个属性我可以设置让电子邮件的起源是B或C,而不是预定A.

+0

澄清了问题,并添加了相应的标签 – SeanC 2015-04-01 21:21:15

+0

您可以设置“答复”递送选项。但除非Outlook已为其他帐户配置了委派权限,否则任何其他选项都将无法使用。 – jessehouwing 2015-04-01 21:31:22

+0

我真的很建议看看EWS,它只是一个必须随PowerShell脚本提供的DLL。由于所有恶意软件都是在2000年初编写的,如果该功能可以传播垃圾邮件,病毒和窃取整个地址簿,则自动化脚本的自动化功能非常有限。 – jessehouwing 2015-04-01 21:32:39

回答

1

您需要设置的MailItem类,允许设置的SendUsingAccount财产一个Account对象,表示MailItem将要发送到的帐户。例如:

Sub SendUsingAccount() 
Dim oAccount As Outlook.account 
For Each oAccount In Application.Session.Accounts 
    If oAccount.AccountType = olPop3 Then 
    Dim oMail As Outlook.MailItem 
    Set oMail = Application.CreateItem(olMailItem) 
    oMail.Subject = "Sent using POP3 Account" 
    oMail.Recipients.Add ("[email protected]") 
    oMail.Recipients.ResolveAll 
    oMail.SendUsingAccount = oAccount 
    oMail.Send 
    End If 
Next 
End Sub 

要知道,微软目前并不提倡,不支持的Microsoft Office应用程序,自动化任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM,和NT服务),因为Office在此环境中运行时可能会出现不稳定的行为和/或死锁。

如果您正在构建一个在服务器端上下文中运行的解决方案,则应该尝试使用对于无人执行安全的组件。或者,您应该尝试找到允许至少部分代码运行客户端的替代方案。如果您从服务器端解决方案使用Office应用程序,则该应用程序将缺少成功运行所需的许多必要功能。此外,您将面临整体解决方案稳定性的风险。请阅读Considerations for server-side Automation of Office文章中的更多内容。

相关问题