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

ASP.NET无循环批量发送邮件失败问题求助

ASP.NET结合SendGrid无循环批量发邮件问题解决方案

直接用分号或逗号拼接多个邮箱地址的方式不符合SendGrid的收件人处理规范,这才是导致邮件被误判为“邮箱拼写错误”退回的核心原因。以下是两种无需显式循环的正确实现方式:

方式1:使用SendGrid联系人列表(适合固定收件人群体)

在SendGrid后台创建联系人列表后,代码中直接指定列表ID发送,无需在代码中处理单个收件人:

var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("your-sender@example.com", "发件人名称"));
msg.SetSubject("批量邮件主题");
msg.AddContent(MimeType.Text, "邮件内容");
// 绑定SendGrid后台创建的联系人列表ID
msg.SetSendToList("your-contact-list-id");

var client = new SendGridClient("your-sendgrid-api-key");
await client.SendEmailAsync(msg);

方式2:通过集合批量添加收件人(适合动态收件人群体)

将邮箱集合转换为List<EmailAddress>后一次性传入,代码中无需写显式循环:

// 示例:从数据源获取的邮箱集合
var recipientEmails = new List<string> { "user1@test.com", "user2@test.com", "user3@test.com" };
var recipientList = recipientEmails.Select(email => new EmailAddress(email)).ToList();

var msg = new SendGridMessage();
msg.SetFrom(new EmailAddress("your-sender@example.com", "发件人名称"));
msg.SetSubject("批量邮件主题");
msg.AddContent(MimeType.Text, "邮件内容");
// 一次性添加所有收件人
msg.AddTo(recipientList);

var client = new SendGridClient("your-sendgrid-api-key");
await client.SendEmailAsync(msg);

关键说明

SendGrid API要求每个收件人必须是独立的EmailAddress对象,直接传入带分隔符的字符串会被当作单个非法邮箱地址解析,自然触发格式错误的退回提示。单个邮箱能正常发送,是因为此时字符串本身是合法的邮箱格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:07:40