SendGrid" To"列出列表中每个人都可以看到的电子邮件ID

时间:2015-12-12 05:53:48

标签: c# asp.net console-application email-integration sendgrid

我正在使用SendGrid通过asp.net中的控制台应用程序向用户列表发送电子邮件。我在发送电子邮件时在AddTo部分发送用户电子邮件地址列表。代码如下所示:

$(document).ready(function() { $("select").kendoMultiSelect(); }); $( document ).on( "click", "#clear", function(){ $("select option").val(""); });

电子邮件按预期发送,但在" To"在电子邮件的一部分,我能够看到发送此电子邮件的用户的所有电子邮件ID(图片附在下面)。我希望隐藏电子邮件ID,以便没有人滥用列表中的其他电子邮件ID。无论如何我可以用SendGrid完成这个吗? enter image description here

2 个答案:

答案 0 :(得分:2)

使用.AddBcc()代替.AddTo()。但是,如果你这样做,那么你必须将To地址设置为“no-reply@example.com”,这是不理想的,可能会增加消息在你的垃圾邮件或垃圾文件夹中结束的可能性用户。

反过来,写一个for循环来发送每个用户的电子邮件。

var emailAddresses = new List<string>() { "user1@abc.com", "user2@xyz.com", "user3@abc.com", "user4@xyz.com" };

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

     email.AddTo(emailAddress);

     // set other values such as the email contact

     // send/deliver email
}

电子邮件的内容对每个人来说都是一样的吗?我会假设每个人都有不同的“每月使用量”,如果是这样,for循环会更好......

答案 1 :(得分:2)

要发送给SendGrid中的多个收件人而不让他们看到对方,您希望使用X-SMTPAPI header,而不是本机SMTP To标头。

var header = new Header();

var recipients = new List<String> {"a@example.com", "b@exampe.com", "c@example.com"};
header.SetTo(recipients);

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

var mail = new MailMessage
{
    From = new MailAddress("please-reply@example.com"),
    Subject = "Welcome",
    Body = "Hi there %name%"
};

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

SendGrid会解析SMTPAPI标头,每个收件人都会收到一封不同的单一收件人信息。