每天只发送一次邮件

时间:2014-04-02 09:49:10

标签: c# email

我正在开发一个代码,将邮件发送到数据库电子邮件ID

这是aspx.cs文件中的页面加载

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        loadEmp_Emailid();
    }
}
在具有此代码的loadEmp_Emailid()函数之后

protected void loadEmp_Emailid()
{
    con.Open();
    SqlCommand cmd = new SqlCommand("select email from emailtable", con);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    int size_arr = ds.Tables[0].Rows.Count;
    string[] arr = new string[size_arr];
    int i = 0;
    if (ds.Tables[0].Rows.Count > 0)
    {
        foreach (DataRow dr in ds_.Tables[0].Rows) 
        {
            arr[i] = dr["email"].ToString();
            if (dr["email"].ToString() == "")
            {

            }
            else
            {
                sendmail(arr[i]);
            }
            i++;
        }
    }
    else
    {

    }
}

上面的代码我得到10个电子邮件ID,如

test@gmail.com
test1@gmail.com
test2@gmail.com
test3@gmail.com
test4@gmail.com
test5@gmail.com
.............
..............

这是发送邮件功能

public  void sendmail(string emailTo)
{
    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
    smtpClient.Host = "smtp.247headhunting.com";
    smtpClient.Credentials = new System.Net.NetworkCredential("test@test.com", "xxxxx");
    System.Net.Mail.MailAddress From = new System.Net.Mail.MailAddress("test@test.com", "XXXXXX");
    System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();
    Message.From = From;
    Message.To.Add(new System.Net.Mail.MailAddress(emailTo));
    Message.Subject = "Subject ";
    Message.Body = "Testing";
    Message.IsBodyHtml = true;
    try
    {
        smtpClient.Send(Message);
    }
    catch (Exception ex)
    {
    }
    finally
    {
        Message.Dispose();
    }
}

这里的问题是邮件发送的每个页面加载时间......

我不希望在不使用页面加载概念的情况下在一天内发送更多一次 我想自动发送请给我任何建议

由于  普拉迪普

2 个答案:

答案 0 :(得分:1)

不要从ASP.NET页面执行批处理作业。您可以改为使用Quartz.NET enterprise scheduler(开源)等专用调度程序。

您可以查看Quick start guidevarious tutorials

注意:基本的想法是将您的quartz.net服务器作为Windows服务托管在您的asp.net网站旁边。在asp.net网站上托管一个asp.net网站可能是一个坏主意(例如,应用程序池回收的不可预测性可能导致意外行为)。

答案 1 :(得分:0)

对于ScheduleTask,首先构建一个简单的Console-Application,从数据库加载Email,并通过smtpClient发送消息。

跟随this

我希望它有所帮助。