asp.net 尝试在不使用for循环的情况下发送多封电子邮件

vohkndzv  于 2023-07-01  发布在  .NET
关注(0)|答案(1)|浏览(96)

我在ASP.NET中编写了这段代码,以发送多封电子邮件,而不使用for循环。在包管理器控制台中,当我执行dotnet run时,它说我的电子邮件排队成功。
然而,当我去SendGrid API检查我的电子邮件状态时,它说我的电子邮件被删除了,因为电子邮件中有一个错字。就实际的电子邮件而言,没有错字,所以我猜这与我在每封电子邮件之间添加的分号有关。
我添加分号的原因是因为我看到另一篇文章提到了个人如何能够在不使用循环的情况下发送多封电子邮件。关于如何解决这个问题/在不使用for循环的情况下向多个人发送同一封电子邮件的任何建议。
我试着用逗号替换冒号,但也不起作用。只有当我有一封电子邮件时,电子邮件才能工作。

bmp9r5qi

bmp9r5qi1#

在这里查看sendgrid客户端的源代码:https://github.com/sendgrid/sendgrid-csharp/blob/main/src/SendGrid/Helpers/Mail/SendGridMessage.cs
您可以调用“AddTos”而不是“AddTo”。AddTos接受电子邮件地址列表。而AddTo正在将您的组合列表放入单个电子邮件地址,这就是它失败的原因。
您的解决方案看起来像这样:
首先将您的字符串列表转换为SendGrid电子邮件地址列表

string[] list_of_emails = new string[4] { "email1@mail.com", "email2@mail.com", "email3@mail.com", "email4@mail.com" };

var mails = list_of_emails.ToList().Select(x => new EmailAddress(x));

然后使用AddTos而不是AddTo将该列表传递到消息中。

msg.AddTos(emails)

检查以下使用System.Net.Mail.MailAddress的示例:https://dotnetfiddle.net/vwFit2

相关问题