首页 > 解决方案 > 使用 MailKit 的单个 SMTP 事务向多个收件人发送电子邮件

问题描述

在我的环境中,我们使用 MailKit 通过 Office 365 SMTP 以编程方式发送电子邮件。我最近意识到,如果我发送一封包含多个收件人的电子邮件,并且其中一个地址在我们的组织中不再存在,O365 服务器将拒绝整个电子邮件(不将其发送给其余收件人),如果单个收件人是无效的。产生的错误是

5.4.1 Recipient address rejected: Access denied. 

当我发送电子邮件时,我更喜欢在电子邮件中显示所有收件人,以便每个人都知道谁参与其中并可以回复组。所有收件人都在我的组织内,因此他们已经拥有彼此的电子邮件地址。

根据 SMTP 的工作方式(使用单独的 RCPT 和标头),似乎我应该能够与标头中的每个人一起发送电子邮件,但使用 SMTP 服务器的单独事务,以便我可以捕获为每个地址生成的异常。

这可能与MailKit有关吗?

标签: c#emailoffice365mailkit

解决方案


查看采用 MailboxAddress 参数的 Send() 和 SendAsync() 方法:

http://www.mimekit.net/docs/html/M_MailKit_MailTransport_Send_2.htm

这使您可以准确地控制将消息发送给谁,而不是让 MailKit 的 SmtpClient 通过收集来自 To、Cc 和 Bcc 标头的地址来决定将消息发送给谁。


推荐阅读