我有一个电子邮件订阅者的数据库;约。 1800名单中。我们有我们自己的交换服务器。我使用下面的代码从数据库中获取每个电子邮件地址,并一次一个地发送电子邮件。我正在使用ASP.NET 4.0 Web窗体来执行此操作。ASP.NET电子邮件订阅
我注意到电子邮件正在发送时挂起的页面。什么是实现这个最好的方法 - 使用控制台应用程序?我将如何去测试像这样的压力测试?
我也是在服务器日志得到一个未处理的错误消息:
事件代码:3001 事件消息:请求已经中止。
// Call data access method via business class
TaxSalesBusiness bizClass = new TaxSalesBusiness();
DataSet ds = bizClass.GetSubscribers();
foreach (DataRow row in ds.Tables[0].Rows)
{
// Check well-formedness of each email adddress
if (!IsWellformedEmailAddr(row["Email"].ToString()))
{
// Ignore and log mal-formed email address
LogError(row["Email"].ToString()
+ " is a malformed email address. Message was not sent to this subscriber "
+ row["Name"].ToString() + ".", "");
continue;
}
else
{
string toAddress = row["Email"].ToString();
smtpClient.Send(fromAddress, toAddress, message.Subject, message.Body);
}
}
+1,谢谢。测试所有正在发送的电子邮件的最佳方式是什么? – IrishChieftain
@IrishChietain:我想你会问,因为你想异步发送它们......你可以保留一个计数器,因为你事先知道了你有多少条记录(即'int totalEmailsToSend = ds.Tables [0] .Rows.Count' )。当调用回调方法时,您可以增加计数器。一旦他们都是平等的(totalEmailsToSend和你的柜台),你知道你已经完成了。 – Icarus