Parallel.ForEach()只执行一个动作吗?

时间:2017-12-19 17:48:59

标签: c#

我很难为每个人发送使用并行的电子邮件...万一,代码工作正常,但它不会发送所有电子邮件。它实际上只发送1 ...没有错误并由编译器发送。

MailSender emailHelper = new MailSender(server, serverPort, loginName, password, true);

Parallel.ForEach(File.ReadLines(textBoxListaClientes.Text), 
                 new ParallelOptions { MaxDegreeOfParallelism = 4 }, 
                 line =>
{
      //NOME CLIENTE;EMAIL
      string[] linhaQuebrada = line.Split(';');

      emailHelper.Send(loginName, linhaQuebrada[1], assunto, message);

      MessageBox.Show("Email send to => " + linhaQuebrada[0]);

});

MessageBox.Show("Done!");

我的文件=>

Name1;email1@example.com
Name2;email2@example.com
Name3;email3@example.com
Name4;email4@example.com

我无法确定我做错了什么......

1 个答案:

答案 0 :(得分:0)

除非您运行自己的SMTP服务器,否则没有理由使用Parallel.ForEach()。因为其他电子邮件提供商会限制您的连接数量。他们会认为你正在尝试发送垃圾邮件。

尝试发送一封电子邮件。

如果该电子邮件有效,则删除Parallel.ForEach()并在每条消息之间使用延迟约5秒。发送一百(100)条消息只需要花费超过8分钟。

您的第二选择是使用Email marketing software