c# - 使用 MailKit 的单个 SMTP 事务向多个收件人发送电子邮件
问题描述
在我的环境中,我们使用 MailKit 通过 Office 365 SMTP 以编程方式发送电子邮件。我最近意识到,如果我发送一封包含多个收件人的电子邮件,并且其中一个地址在我们的组织中不再存在,O365 服务器将拒绝整个电子邮件(不将其发送给其余收件人),如果单个收件人是无效的。产生的错误是
5.4.1 Recipient address rejected: Access denied.
当我发送电子邮件时,我更喜欢在电子邮件中显示所有收件人,以便每个人都知道谁参与其中并可以回复组。所有收件人都在我的组织内,因此他们已经拥有彼此的电子邮件地址。
根据 SMTP 的工作方式(使用单独的 RCPT 和标头),似乎我应该能够与标头中的每个人一起发送电子邮件,但使用 SMTP 服务器的单独事务,以便我可以捕获为每个地址生成的异常。
这可能与MailKit有关吗?
解决方案
查看采用 MailboxAddress 参数的 Send() 和 SendAsync() 方法:
http://www.mimekit.net/docs/html/M_MailKit_MailTransport_Send_2.htm
这使您可以准确地控制将消息发送给谁,而不是让 MailKit 的 SmtpClient 通过收集来自 To、Cc 和 Bcc 标头的地址来决定将消息发送给谁。
推荐阅读
- r - Count occurrences in any order
- elasticsearch - Elasticsearch pagination through large sets in parallel
- python - 用倒数第三个值替换 NaN 值
- swift - Swift ObservedObject 'self' used in property access 'userPreferences' before all stored properties are initialized
- laravel - Error 404 in a shared hosting in Laravel 8
- centos7 - logout stuck - exit only with Ctrl+C
- django - 在这种情况下,Django 的 `ModelDoesNotExist` 错误是否有解决方法?
- python - 如何根据图像中已知的对象坐标避免图像中的对象重叠
- react-three-fiber - 反应三纤维纬度/经度标记
- regex - 用于提取正则表达式组的电子表格公式