【问题标题】:using powershell to send emails with different From addresses使用powershell发送具有不同发件人地址的电子邮件
【发布时间】:2017-02-24 03:42:35
【问题描述】:

我使用 powershell 从 Outlook 发送电子邮件(完全自动过程)。这非常适合默认邮箱。我在开发网络有很多限制,不能使用除Outlook和powershell以外的任何软件。

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

我使用的代码是这样的。

$o = New-Object -com Outlook.Application
$mail = $o.CreateItem(0)
$mail.importance = 2
$mail.subject = "SUBJECT"
$mail.body = "BODY"
$mail.To = "email001@xx.com;"
$mail.Send()

我可以设置一个属性来使电子邮件来源为 B 或 C,而不是预定的 A。

【问题讨论】:

  • 澄清问题,并添加适当的标签
  • 您可以设置“回复”递送选项。但除非 Outlook 已为其他帐户配置了委派权限,否则任何其他选项都将不可用。
  • 我真的非常推荐查看 EWS,它只是一个 DLL,必须随您的 powershell 脚本一起提供。由于在 2000 年初编写的所有恶意软件都利用该功能传播垃圾邮件、病毒和窃取整个通讯簿,因此自动化 Outlook 的自动化脚本非常有限。

标签: powershell outlook office-automation


【解决方案1】:

您需要设置 MailItem 类的 SendUsingAccount 属性,该属性允许设置一个代表要发送 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 ("someone@example.com") 
     oMail.Recipients.ResolveAll 
     oMail.SendUsingAccount = oAccount 
     oMail.Send 
   End If 
 Next 
End Sub 

请注意,Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office在此环境中运行 Office 时可能会出现不稳定的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office 文章中了解更多信息。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2015-08-24
    • 2019-03-20
    • 2016-01-21
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多