类似的问题已发布在这里,这里和这里,但这些问题要么与 SDK 有关(其中没有 C#),要么解决方法不合适(见下文)。
我们使用 C# 向大约 5,000 名收件人发送电子邮件(每批 1,000 封)。这些收件人是政府承包商,因此出于数据保护原因,他们的电子邮件地址不能全部出现在 TO 集合中。
历史上,我们使用 MailGun SMTP 发送,效果很好,但除非 TO 集合中出现至少一个地址,否则 API 不会发送:
var formData = new MultipartFormDataContent {
{ new StringContent($"{ myMessage.From!.DisplayName} <{ myMessage.From!.Address}>"), "from" },
{ new StringContent($"{ myMessage.ReplyToList[0]!.DisplayName} <{ myMessage.ReplyToList[0].Address}>"), "h:Reply-To" },
{ new StringContent( myMessage.Subject), "subject" },
{ new StringContent( myMessage.Body), myMessage.IsBodyHtml ? "html" : "text" },
};
// formData.Add(new StringContent(myListOfRecipients), "to"); // Works
formData.Add(new StringContent(myListOfRecipients), "bcc"); // Fails
var result = await httpClient.PostAsync($"https://api.eu.mailgun.net/v3/mydomain.co.uk/messages", formData);
有解决方案吗?我们不想发送数千封单独的电子邮件,因为这会浪费资源和带宽。
在两个相关的 SO 问题(上文)中,可接受的答案是将发件人地址复制为收件人地址,但这意味着每月大约有 25,000 封电子邮件发送给我们,这肯定不是一件好事。此外,收件人收到发给其他人的电子邮件可能会令人困惑。