2

J'utilise SendGrid pour envoyer des e-mails à une liste d'utilisateurs via une application console dans asp.net. J'envoie une liste des adresses e-mail des utilisateurs dans la section AddTo lors de l'envoi d'un e-mail. Le code ressemble à ceci:SendGrid "To" Liste des adresses e-mail visibles par tous les membres de la liste

SendGridMessage message = new SendGridMessage();
message.AddTo(new List<string>() { "[email protected]", "[email protected]", "[email protected]", "[email protected]" });

L'e-mail est envoyé comme prévu, mais dans la section « A » de l'e-mail, je suis en mesure de voir à qui cet e-mail a été envoyé à tous les ids email des utilisateurs (image ci-jointe). Je veux que les identifiants d'email soient cachés afin que personne n'utilise les autres identifiants d'email dans la liste. Y at-il de toute façon que je peux accomplir cela en utilisant SendGrid? enter image description here

Répondre

1

Utilisez .AddBcc() au lieu de .AddTo(). MAIS si vous faites cela, alors vous devrez définir l'adresse To à quelque chose comme "[email protected]" qui n'est pas idéal et pourrait augmenter les chances que le message se retrouve dans les dossiers SPAM ou Junk de votre utilisateurs. A la place, écrivez une boucle for pour envoyer l'email par utilisateur.

var emailAddresses = new List<string>() { "[email protected]", "[email protected]", "[email protected]", "[email protected]" }; 

for (var emailAddress in emailAddresses) 
{ 
    var email = new SendGridMessage(); 

    email.AddTo(emailAddress); 

    // set other values such as the email contact 

    // send/deliver email 
} 

Le contenu du message est-il le même pour tous? Je suppose que chaque personne aurait des montants d'utilisation mensuelle différents et si la boucle for serait meilleure ...

2

Pour envoyer à plusieurs destinataires dans SendGrid sans qu'ils se voient, vous voulez utiliser le X-SMTPAPI header, as opposé à l'en-tête SMTP natif.

var header = new Header(); 

var recipients = new List<String> {"[email protected]", "[email protected]", "[email protected]"}; 
header.SetTo(recipients); 

var subs = new List<String> {"A","B","C"}; 
header.AddSubstitution("%name%", subs); 

var mail = new MailMessage 
{ 
    From = new MailAddress("[email protected]"), 
    Subject = "Welcome", 
    Body = "Hi there %name%" 
}; 

// add the custom header that we built above 
mail.Headers.Add("X-SMTPAPI", header.JsonString()); 

L'en-tête de SMTPAPI sera analysé par SendGrid, et chaque destinataire recevra un message envoyé à un seul distinct.

+0

Cela s'applique si vous utilisez des classes SmtpClient et MailMessage. L'OP utilise SendGridMessage. Si l'OP change son code pour utiliser les classes SmtpClient et MailMessage, alors cela fonctionnera. –