ASP.NET Identity单个邮箱字段能否添加多邮箱实现批量发送?
关于Microsoft Identity批量发送邮件的问题
Microsoft Identity默认的用户模型(IdentityUser)里的Email属性是为单个邮箱地址设计的,不支持直接在该字段存储多个分号分隔的邮箱。但你完全可以自行实现批量发邮件的逻辑,无需依赖Identity的字段限制,具体修改方案如下:
实现步骤
- 将分号分隔的邮箱字符串拆分为单个邮箱地址的集合
- 遍历集合,逐个添加到邮件的收件人列表
- 可选:添加邮箱格式验证,避免无效地址导致发送失败
修改后的代码示例
using (var smtp = new System.Net.Mail.SmtpClient("ip address here")) { var emailMessage = new MailMessage(); emailMessage.From = new MailAddress("email@gmail.com"); // 拆分分号分隔的邮箱字符串,过滤空值与空白字符 var emailList = email.Split(';') .Select(e => e.Trim()) .Where(e => !string.IsNullOrEmpty(e)); foreach (var singleEmail in emailList) { // 可选:验证邮箱格式合法性 if (System.Net.Mail.MailAddress.TryCreate(singleEmail, out _)) { emailMessage.To.Add(singleEmail); } } emailMessage.Subject = "新文档已上线!"; emailMessage.Body = "您有一份新的采购订单可在门户中查看!"; await smtp.SendMailAsync(emailMessage); }
额外说明
如果业务需要长期存储多个收件邮箱,建议不要复用Identity的Email字段,而是单独创建存储收件人列表的表或字段,这样更符合数据设计规范,也便于后续维护。
内容的提问来源于stack exchange,提问作者Megan Paterson
相关产品推荐
相关产品推荐

