只有第一封电子邮件在窗口服务的For循环中发送

时间:2017-06-05 16:40:23

标签: c# email windows-services sendmail taskscheduler

我想使用自己的数据库向超过2个人发送电子邮件。 所以我用for循环发送电子邮件。但它只是发送给第一个人。 我还检查email_data是否有超过2个,并且我很好地带来了电子邮件数据。 这是我的代码。

CMD echo "127.0.0.1 noreply.example.com $(hostname)" >> /etc/hosts \
    && sendmailconfig \
    && cron -f

2 个答案:

答案 0 :(得分:0)

通过添加调试打印来检查行计数

并尝试将睡眠放在最后

                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = credentials;
                    smtp.Port = 587;
                    smtp.Send(mm);

<强> System.Threading.Sleep(1000);

答案 1 :(得分:0)

我尝试在我的计算机上运行您的代码(我刚用我的私人Gmail帐户凭据替换了凭据)并且它没有任何问题 - 电子邮件已成功发送到3个不同的电子邮件地址。所以问题可能与您的计算机有关。所以这里有一些你可以尝试的想法:

  • 在不同的计算机上运行您的程序以查看它是否在那里工作(for 比较,我在Windows 10 Home,Visual Studio 2017 CE,面向.NET Framework 4.7的控制台应用程序上成功运行它)
  • 检查您的防病毒软件和防火墙是否阻止群发电子邮件发送。
  • 尝试调试SmtpClient.Send()方法的源代码以查看位置 完全执行停止,这应该给你一个提示有什么问题 以及如何解决它。
  • app.config中的
  • 启用详细的网络通信记录,并查看连接到SMTP服务器时是否存在问题。

BTW可能存在错误:for (int i = 0; i <= email_data.Rows.Count; i++)应为for (int i = 0; i < email_data.Rows.Count; i++)