我正在使用SendGrid通过asp.net中的控制台应用程序向用户列表发送电子邮件。我在发送电子邮件时在AddTo部分发送用户电子邮件地址列表。代码如下所示:
$(document).ready(function() {
$("select").kendoMultiSelect();
});
$( document ).on( "click", "#clear", function(){
$("select option").val("");
});
电子邮件按预期发送,但在" To"在电子邮件的一部分,我能够看到发送此电子邮件的用户的所有电子邮件ID(图片附在下面)。我希望隐藏电子邮件ID,以便没有人滥用列表中的其他电子邮件ID。无论如何我可以用SendGrid完成这个吗?
答案 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标头,每个收件人都会收到一封不同的单一收件人信息。