【发布时间】:2020-11-16 20:38:39
【问题描述】:
在我的环境中,我们使用 MailKit 通过 Office 365 SMTP 以编程方式发送电子邮件。我最近意识到,如果我发送一封包含多个收件人的电子邮件,并且其中一个地址在我们的组织中不再存在,O365 服务器将拒绝整个电子邮件(不将其发送给其余收件人),如果单个收件人是无效的。产生的错误是
5.4.1 Recipient address rejected: Access denied.
当我发送电子邮件时,我更喜欢在电子邮件中显示所有收件人,以便每个人都知道谁参与其中并可以回复组。所有收件人都在我的组织内,因此他们已经拥有彼此的电子邮件地址。
基于 SMTP 的工作方式(使用单独的 RCPT 和标头),我似乎应该能够与标头中的每个人一起发送电子邮件,但使用 SMTP 服务器的单独事务,以便我可以捕获为每个生成的异常地址。
这可能与MailKit有关吗?
【问题讨论】:
-
失败的电子邮件地址没有显示在您的收件箱中吗? SMTP 只有一个 TO ADDRESS,您可以在其中放置所有收件人。
-
电子邮件都是自动生成的,因此它们来自我无权访问的 DoNotReply@example.com 类型的地址。我的理解是,当您通过 SMTP 发送时,您首先指定通过 RCPT TO 命令发送电子邮件的实际收件人,然后您还将这些地址放在标头中。如果您将某人放在 RCPT 中而不在标题中显示他们,我认为这就是 BCC 选项的工作方式。
-
RCPT TO 是收据在人们响应后到达的地方。密件抄送是盲人,接收电子邮件的人看不到其他收到电子邮件的人。
标签: c# email office365 mailkit