C# 在asp.net中创建邮件列表以发送大量电子邮件

C# 在asp.net中创建邮件列表以发送大量电子邮件,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我想通过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 =

我想通过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中的开源邮件列表

尝试使用多线程,下面是一个示例

尝试使用多线程,下面是一个示例

我会像这样更改代码

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()只被调用一次。

我会像这样更改代码

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()只被调用一次。

可能您有运行脚本的时间限制(即30秒)。我建议分为两个步骤:

  • 格式化您需要的电子邮件并将其写入数据库表(状态为“未发送”)
  • 运行另一个脚本/程序,从表中选择N电子邮件,发送并将其标记为“已发送”
  • 等待/睡眠N
  • 重复第2步
  • 这使您可以发送几乎未限制数量的电子邮件,而不需要超时
    另外,如果您在主机上每小时/天发送电子邮件有一定限制,请注意

    运行脚本可能有一定的时间限制(即30秒)。我建议分为两个步骤:

  • 格式化您需要的电子邮件并将其写入数据库表(状态为“未发送”)
  • 运行另一个脚本/程序,从表中选择N电子邮件,发送并将其标记为“已发送”
  • 等待/睡眠N
  • 重复第2步
  • 这使您可以发送几乎未限制数量的电子邮件,而不需要超时
    另外,如果您在主机上每小时/天发送电子邮件有一定限制,请注意

    为要发送的电子邮件创建工作项并将其推送到队列中。然后尽可能多地使用竞争消费者(也称为工作人员)发送这些电子邮件。

    为要发送的电子邮件创建工作项,并将其推送到队列中。然后尽可能多地使用竞争对手(即员工)发送这些电子邮件。

    asp应用程序只需创建一个包含信息的XML并保存即可


    将windows服务与filewatcher一起使用。此服务仅检测以XML格式创建的列表并将其发送。

    asp应用程序只需创建包含信息的XML并保存即可


    将windows服务与filewatcher一起使用。此服务仅检测XML列表的创建并发送。

    我以前使用过这一方法,但性能没有问题。对我来说重要的是成功发送所有电子邮件我以前使用过这一方法,但性能没有问题。对我来说重要的是发送所有电子邮件成功这不是我的问题我想知道还有其他方法做这个项目吗?我是说更多的专业方法这不是我的问题我想知道还有其他方法做这个项目吗?我是说更多的专业方法