我循环向我们公司的30多位员工发送邮件,每次发送一封信,每次都是发送到第三封信的时候,就提示操作已超时,smtp服务器是smtp.gmail.com,而收信人地址则是各种邮箱都有,例如 126、yahoo和gmail等。 我发送每封信都间隔 15秒,但是每次到第三封信就会 提示 操作已超时。 try
{ client.Send(message);
message.Dispose();
backgroundWorker1.ReportProgress(100, emailAddress + " have send \n"); }
catch (System.Net.Mail.SmtpException ee)
{
backgroundWorker1.ReportProgress(100, emailAddress +" "+ee.Message+ " Appear wrong \n"); }
{ client.Send(message);
message.Dispose();
backgroundWorker1.ReportProgress(100, emailAddress + " have send \n"); }
catch (System.Net.Mail.SmtpException ee)
{
backgroundWorker1.ReportProgress(100, emailAddress +" "+ee.Message+ " Appear wrong \n"); }
只是您处理机制需要改一下方式.
不能用循环来发送邮件.因为以CPU的发送速度来发送,这样太快了,一般邮件服务器会当作垃圾邮件来处理.
所以,您得先建一个表,来存放要要发送邮件.
再用定时器或是工作排程来分隔一段时间来发送.
其实我也是从 数据库提取收件地址的形式,而且循环里面用 System.Threading.Thread.Sleep(5000); 来减速