我想通过asp.net创建一个邮件列表。我已经研究了很多关于它的文章。但是所有这些都是一样的。在那篇文章写的我应该使用这个代码
var list = from c in context.Emails orderby c.EmailAddress select c.EmailAddress;
MailMessage mail = new MailMessage();
foreach (var c in list)
{
try
{
mail.From = new MailAddress(txtfrom.Text);
mail.To.Add(new MailAddress(c.ToString()));
mail.Subject = txtSub.Text;
mail.IsBodyHtml = true;
mail.Body = txtBody.Text;
if (FileUpload1.HasFile)
{
mail.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName));
}
SmtpClient smtp = new SmtpClient();
smtp.Send(mail);
}
catch (Exception)
{
}
}
所以问题是,这种方式发送大量电子邮件真的很有用吗? (例如2000封电子邮件?) 在那些文章中写道,我应该在每个时期之后延迟(例如在发送50封电子邮件之后)。我想知道如何在发送电子邮件之间延迟。 我正在寻找一种完美的方式来创建这个项目 我想知道是否有人在asp.net中给我开源邮件列表
答案 0 :(得分:1)
我会像这样更改代码
var list = from c in context.Emails orderby c.EmailAddress select c.EmailAddress;
MailMessage mail = new MailMessage();
try
{
mail.From = new MailAddress(txtfrom.Text);
foreach (var c in list)
{
mail.To.Add(new MailAddress(c.ToString()));
}
mail.Subject = txtSub.Text;
mail.IsBodyHtml = true;
mail.Body = txtBody.Text;
if (FileUpload1.HasFile)
{
mail.Attachments.Add(new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.FileName));
}
SmtpClient smtp = new SmtpClient();
smtp.Send(mail);
}
catch (Exception)
{
//exception handling
}
至少,smtp.Send()只被调用一次。
答案 1 :(得分:0)
尝试使用多个线程,这是一个例子; msdn forum sendin bulk mails
答案 2 :(得分:0)
你可能有一些运行脚本的时间限制(即30秒)。我建议分成两步:
这使您可以发送几乎无限数量的电子邮件,没有超时 另外 - 如果您在托管上每小时/每天发送电子邮件有一些限制,请注意!
答案 3 :(得分:0)
为要发送的电子邮件创建工作项并将其推送到队列。然后使用尽可能多的竞争消费者(也就是工人)来发送这些电子邮件。
答案 4 :(得分:0)
asp app只需要用信息创建一个XML并保存。
使用带有filewatcher的Windows服务。此服务仅检测以XML格式创建列表并发送它。