You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET中使用SendGrid群发邮件时隐藏其他收件人邮箱的方法

问题

我能在.NET中使用SendGrid给多人发送邮件,但收件人收到邮件时能看到所有其他收件人的邮箱地址。想实现从列表(数组)向收件人群发邮件,但不让收件人看到其他收件人。我尝试把msg.AddTos()改为msg.AddBccs(),但邮件似乎根本没发送出去,至少我没收到。

收件人打开邮件时的示例:能看到自己的邮箱“Test Roy”以及所有其他收件人。
收件人看到的邮件界面

我的邮件发送函数:

private async Task<Response> ExecuteTemplate(string[] toEmailAddresses, string subject, dynamic templateData)
{
    var client = new SendGridClient(sendGridOptions.SendGridKey);
    var msg = new SendGridMessage();
    msg.SetFrom(new EmailAddress("automated@mysite.com", "MySite"));
    msg.SetTemplateId(_config["SendGrid:TemplateId"]);
    templateData.subject = subject;
    msg.SetTemplateData(templateData);

    if (toEmailAddresses.Length > 1)
    {
        var emailAddresses = toEmailAddresses.Select(array => new EmailAddress(array)).ToList();
        // msg.AddBccs(emailAddresses);
        msg.AddTos(emailAddresses);
    }
    else
    {
        msg.AddTo(toEmailAddresses[0]);
    }

    msg.SetClickTracking(false, false);
    msg.SetOpenTracking(false);
    msg.SetGoogleAnalytics(false);
    msg.SetSubscriptionTracking(false);

    var response = await client.SendEmailAsync(msg);

    return response;
}
解决方案

用Bcc是正确的思路,但邮件没发送大概率是因为SendGrid的规则限制,以下是解决步骤:

  • 必须设置至少一个主收件人(To)
    SendGrid要求邮件必须包含至少一个To收件人,仅用Bcc会被拦截。你可以添加一个内部邮箱作为主收件人,把所有实际收件人放到Bcc里,这样收件人就看不到彼此的地址了。修改后的代码逻辑如下:
if (toEmailAddresses.Length > 1)
{
    var emailAddresses = toEmailAddresses.Select(array => new EmailAddress(array)).ToList();
    // 添加内部邮箱作为主收件人(仅用于满足SendGrid规则)
    msg.AddTo(new EmailAddress("internal@mysite.com", "Internal"));
    // 实际收件人全部加入Bcc
    msg.AddBccs(emailAddresses);
}
else
{
    msg.AddTo(toEmailAddresses[0]);
}
  • 检查SendGrid控制台的发送日志
    登录SendGrid后台查看邮件状态,确认是被退回、进入垃圾邮件还是有格式错误。比如收件人邮箱拼写错误、域名无效等,都会导致收不到邮件。

  • 验证邮箱格式
    确保toEmailAddresses数组里的邮箱格式都正确,没有多余字符或拼写错误。

  • 先测试单个Bcc收件人
    先给单个邮箱发Bcc测试,确认能收到后再批量发送,排除批量处理的问题。

另外还有一种方案:循环给每个收件人单独发邮件。遍历收件人数组,每次创建新的SendGridMessage并单独发送,这种方式每个收件人看到的都是自己的专属邮件,不会有其他收件人信息,但如果收件人数量过大,可能触发SendGrid的发送频率限制,你可以根据需求选择。

内容的提问来源于stack exchange,提问作者chuckd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:05:15