Powershell发送邮件消息给2个收件人返回"服务器响应是4.5.3太多收件人"

时间:2017-12-19 23:08:18

标签: powershell smtp exchange-server

我有一个PowerShell脚本,它运行SQL数据库的报告,并将报告附加到使用send-mailmessage发送的电子邮件。

我的语法是send-mailmessage -to user1@domain.com.au -cc user2@domain.com.au -subject "PE matter report (Since 1 July 2015)" -bodyashtml -body $body -Attachments "C:\scripts-and-reports\New PE matters since 01 July 2015.xlsx" -from databaseserver@domain.com.au -Priority high -Verbose -SmtpServer domain-com-au.mail.protection.outlook.com

它返回错误

  

send-mailmessage:系统存储空间不足。服务器响应   是:4.5.3收件人太多(AS780090)

     

[AM1FFO11FD023.protection.gbl]

如果我从脚本中删除了Cc,则消息发送OK并且收到OK。 但我有点需要Cc,如果可能的话,也需要Bcc。

我已将服务器的WAN IP添加到我的域的SPF记录中(并且测试正常),我已将该URL添加到Office365的ExchangeOnline连接筛选器允许列表中,我有甚至添加了一个传输规则来检查IP,它将SCL设置为-1并绕过混乱。

我无法解决这个问题。有没有人有任何建议?

2 个答案:

答案 0 :(得分:1)

这是一种可以尝试的可能性,而不是一个明确的答案。

  1. 首先提出问题:user1 @ domain.com.au和/或user2@domain.com.au分发列表?如果是,请尝试使用单个用户地址。

  2. 也许你正在以某种方式达到节流限制 - 你可以找到here。引用支持页面 - STMP客户端提交的限制限制。限制是:

  3.   

    每天10,000名接收者。每分钟30条消息

    (正如培根比特写的那样,你可能会有一些内部限制) 你必须低于这个限制。您可能正在使用-cc达到限制。

    1. 用双引号括起邮件地址/列表 send-mailmessage -to "user1@domain.com.au" -cc "user2@domain.com.au" ...

    2. 是否适用于除-bcc以外的-cc

    3. -cc是可选的还是总是填充?

答案 1 :(得分:1)

我想我找到了一个解决方法......

我已切换到使用带有身份验证和SSL的Office365 SMTP服务器。

新命令是: -

$login = "mailboxwithsendaspermission@domain.com.au"

$password = "abovemailboxpassword" | Convertto-SecureString -AsPlainText -Force

$credentials = New-Object System.Management.Automation.Pscredential -Argumentlist $login,$password

send-mailmessage -to user1@domain.com.au -cc user2@domain.com.au -subject "PE matter report (Since 1 July 2015)" -bodyashtml -body $body -Attachments "C:\scripts-and-reports\New PE matters since 01 July 2015.xlsx" -from databaseserver@domain.com.au -Priority high -Verbose -UseSsl -Port 587 -SmtpServer smtp.office365.com -Credential $credentials

我认为这不太安全,因为密码以纯文本格式存储,但所有服务器都位于防火墙后面,并且不被其他任何人使用。

我没想过这样做 - 但至少它同时适用于-to-cc-bcc