Problemas semelhantes foram postados aqui , aqui e aqui , mas eles estão relacionados aos SDKs (dos quais não há um em C#) ou a solução alternativa não é adequada (veja abaixo).
Estamos usando C# para enviar um e-mail para cerca de 5.000 destinatários (em lotes de 1.000). Esses destinatários são contratados do governo, então é essencial que seus endereços de e-mail não apareçam todos na coleção TO por motivos de proteção de dados.
Historicamente, enviamos usando o MailGun SMTP, que funciona perfeitamente, mas a API não envia a menos que pelo menos um endereço apareça na coleção TO:
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);
Existe uma solução? Não queremos enviar milhares de e-mails individuais, pois isso é um desperdício de recursos e largura de banda.
Em ambas as perguntas SO relacionadas (acima), a resposta aceita foi duplicar o endereço FROM como o endereço TO, mas isso significará cerca de 25.000 e-mails por mês sendo enviados para nós, o que certamente não é uma coisa boa. Também destinatários recebendo e-mails endereçados a outra pessoa podem ser confusos.
De acordo com a documentação do Mailgun: https://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/#batch-sending , você deve usar
recipient-variables
ao enviar lotes para garantir que o Mailgun enviará e-mails individuais para cadato
destinatário.Isso garante que você só precise fazer uma chamada de API para cada 1.000 destinatários.
Adicione seu e-mail ou algo como noreply-contractors@yourdomain para endereço Para:. Mensagens com vazio
To:
podem ser rejeitadas por filtros antispam.