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

Trying to send multiple emails without using a for-loop

提问人:test 提问时间:6/29/2023 最后编辑:Sir Rufotest 更新时间:6/30/2023 访问量:73

问:

screenshot of code

我在 ASP.NET 中编写了这段代码,以便在不使用 for 循环的情况下发送多封电子邮件。在包管理器控制台中,当我执行 时,它说我的电子邮件已成功排队。dotnet run

但是,当我转到 SendGrid API 检查我的电子邮件状态时,它说我的电子邮件被丢弃了,因为电子邮件中有拼写错误。就实际电子邮件而言,没有错别字,所以我猜这与我在每封电子邮件之间添加的分号有关。

我添加分号的原因是因为我看到另一篇帖子提到,这就是个人如何在不使用循环的情况下发送多封电子邮件。关于如何解决此问题/在不使用 for 循环的情况下向多个人发送同一封电子邮件的任何建议。

我尝试用逗号切换冒号,但也没有用。只有当我有一封电子邮件时,电子邮件才有效。

asp.net 电子邮件 sendgrid sendmail

评论

2赞 Sir Rufo 6/29/2023
你永远不应该发布你的代码的屏幕截图。它是纯文本,您可以在此处复制粘贴

答:

0赞 JustAnotherDev 6/29/2023 #1

在此处查看 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] { "[email protected]", "[email protected]", "[email protected]", "[email protected]" };

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

然后使用 AddTos 而不是 AddTo 将该列表传递到您的邮件中。

msg.AddTos(emails)

有关使用 System.Net.Mail.MailAddress 的示例,请查看以下内容: https://dotnetfiddle.net/vwFit2

评论

0赞 test 6/30/2023
严重性代码说明:项目文件行抑制状态错误 CS1061:“List<string>”不包含“SelectMany”的定义,并且找不到接受“List<string>”类型的第一个参数的可访问扩展方法“SelectMany”(您是否缺少 using 指令或程序集引用?我收到这个错误,有什么想法吗?顺便说一句,我不得不将“选择”切换为“选择许多”,因为选择不接受列表。
0赞 JustAnotherDev 6/30/2023
我稍微调整了代码并添加了一个 dotnetfiddle 示例。