【问题标题】:Powershell send-mailmessage to 2 recipients returns "the server response was 4.5.3 too many recipients"Powershell 向 2 个收件人发送邮件消息返回“服务器响应是 4.5.3 收件人太多”
【发布时间】:2018-06-02 10:50:14
【问题描述】:

我有一个 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]

如果我从脚本中删除抄送,则消息发送 OK 并接收 OK。 但我有点需要那里的抄送,如果可能的话,还有密件抄送。

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

我就是想不通。有人有什么建议吗?

【问题讨论】:

  • 您是否正在使用任何地址分配列表?您的管理员是否设置了任何类型的电子邮件限制?
  • 不,他们不是。一个是我的地址,另一个是办公室经理的地址。我是电子邮件管理员 - 除了 MS Office365 施加的限制之外,没有任何限制。
  • 我也有这个问题。我也正在连接到 MX 级别的服务器。看起来 MX 一次只允许一个收件人。

标签: powershell smtp exchange-server


【解决方案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

【讨论】:

    【解决方案2】:

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

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

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

    每天 10,000 个收件人。每分钟 30 条消息

    (正如 Bacon Bits 所写,您可能在此之上还有一些内部限制) 你必须低于这个限制。 -cc 可能已经达到了极限。

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

    2. 除了-cc之外,它是否适用于-bcc

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

    【讨论】:

    • 1.不; 2. 是同一个域/o365 租用的两个实际邮箱,使用直接发送方式; 3. 试过了,没区别; 4.不,即使我使用-to @('user1@domain.com.au','user2@domain.com.au')也不行; 5. 它是可选的——如果我只使用-to,电子邮件发送正常。请注意,我使用我们的 O365 MX 点作为 SMTP 进行寻址,无需身份验证。如果我使用不同的 SMTP(例如 ISP 的 SMTP)-cc-bcc 工作正常。但这不适用于我们的 Azure 托管服务器。
    • @ReeceDodds:所以问题不在于 powershell 的 send-message,而是 Azure 托管的 SMTP,不是吗?也许您的邮件在某种程度上被视为垃圾邮件?
    • @ReeceDodds:如果它可能是其中之一,请检查此列表? answers.microsoft.com/en-us/windowslive/forum/hotmail-email/… 。从邮件中可以看出,您发送邮件的邮箱可能已达到上限。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2020-09-15
    • 2012-05-01
    • 2012-05-18
    相关资源
    最近更新 更多