代碼寫在Global.aszx中,系統(tǒng)自動(dòng)運(yùn)行
1.Application_Start()中設(shè)定一個(gè)定時(shí)器以及郵件發(fā)送事件 protected void Application_Start(object sender, EventArgs e) System.Timers.Timer timer = new System.Timers.Timer(30000); timer.Elapsed += new System.Timers.ElapsedEventHandler(Send);
2.對Send()方法進(jìn)行編輯,設(shè)定發(fā)送的時(shí)間、發(fā)送郵箱和接收郵箱 public void Send(object sender, System.Timers.ElapsedEventArgs e) SqlConnection myconn = new SqlConnection("Data Source=100.0.4.51;Initial Catalog=XRX;User ID=xrx;Password=b879d~c2a81fd#9b8e33@ffd5!85e5c6cfb9"); string sql = "select mail from MailTest"; SqlCommand mycmd = new SqlCommand(sql, myconn); if (myconn.State == ConnectionState.Closed) SqlDataReader reader = mycmd.ExecuteReader();
SqlConnection myconn2 = new SqlConnection("Data Source=100.0.4.51;Initial Catalog=XRX;User ID=xrx;Password=b879d~c2a81fd#9b8e33@ffd5!85e5c6cfb9"); string sql2 = "select Student.StuID,Student.StuName,Course.CourseName,StudentSign.SignState,StudentSign.OutState, StudentSign.LeaveState,StudentSign.ReMark,StudentSign.LateState from StudentSign join Schedule on Schedule.ScheduleID = StudentSign.ScheduleID join Student on Student.ID = StudentSign.StuID join Course on Course.ID = Schedule.CourseID group by Student.StuID,Student.StuName,Course.CourseName,StudentSign.SignState, StudentSign.OutState,StudentSign.LeaveState,StudentSign.ReMark,StudentSign.LateState"; SqlCommand mycmd2 = new SqlCommand(sql2, myconn2); SqlDataReader reader2 = mycmd2.ExecuteReader(); List<string> record = new List<string>(); string msg = "<td>"+reader2["StuID"].ToString() + "</td><td>" + reader2["StuName"].ToString() + "</td><td>" + reader2["CourseName"].ToString() + "</td><td>" + reader2["SignState"].ToString() + "</td><td>" + reader2["OutState"].ToString() + "</td><td>" + reader2["LeaveState"].ToString() + "</td><td>" + reader2["Remark"].ToString() + "</td><td>" + reader2["LateState"].ToString() + "</td>";
if (DateTime.Now.Minute == 10) string mailBody = getMailBody(record); string aMail = reader["mail"].ToString(); //string msg = reader2["StuID"].ToString() +" "+ reader2["StuName"].ToString() +" "+ reader2["CourseName"].ToString() + " " + reader2["SignState"].ToString() + " " + reader2["OutState"].ToString(); SendEMail("'" + aMail + "'", "'" + aMail + "'", "考勤信息統(tǒng)計(jì)", "" + mailBody + ""); //endEMail sm = new SendMail(); //SendEMail("'"+sql+"'", "'" + sql + "'", "Auto Mail", "This is a auto amil!");
1.篩選出需要接收郵件的郵箱地址 SqlConnection myconn = new SqlConnection("Data Source=100.0.4.51;Initial Catalog=XRX;User ID=xrx;Password=b879d~c2a81fd#9b8e33@ffd5!85e5c6cfb9"); string sql = "select mail from MailTest"; SqlCommand mycmd = new SqlCommand(sql, myconn); if (myconn.State == ConnectionState.Closed) { myconn.Open(); } SqlDataReader reader = mycmd.ExecuteReader();
2.篩選出所需要的信息,創(chuàng)建鏈表,循環(huán)讀取并儲存在鏈表中,將字段數(shù)據(jù)以table的形式保存 SqlConnection myconn2 = new SqlConnection("Data Source=100.0.4.51;Initial Catalog=XRX;User ID=xrx;Password=b879d~c2a81fd#9b8e33@ffd5!85e5c6cfb9"); myconn2.Open(); string sql2 = "select Student.StuID,Student.StuName,Course.CourseName,StudentSign.SignState,StudentSign.OutState, StudentSign.LeaveState,StudentSign.ReMark,StudentSign.LateState from StudentSign join Schedule on Schedule.ScheduleID = StudentSign.ScheduleID join Student on Student.ID = StudentSign.StuID join Course on Course.ID = Schedule.CourseID group by Student.StuID,Student.StuName,Course.CourseName,StudentSign.SignState, StudentSign.OutState,StudentSign.LeaveState,StudentSign.ReMark,StudentSign.LateState"; SqlCommand mycmd2 = new SqlCommand(sql2, myconn2); SqlDataReader reader2 = mycmd2.ExecuteReader(); List<string> record = new List<string>(); while (reader2.Read()) { string msg = "<td>"+reader2["StuID"].ToString() + "</td><td>" + reader2["StuName"].ToString() + "</td><td>" + reader2["CourseName"].ToString() + "</td><td>" + reader2["SignState"].ToString() + "</td><td>" + reader2["OutState"].ToString() + "</td><td>" + reader2["LeaveState"].ToString() + "</td><td>" + reader2["Remark"].ToString() + "</td><td>" + reader2["LateState"].ToString() + "</td>"; record.Add(msg); } myconn2.Close(); 3.生成讀取郵件內(nèi)容的方法,創(chuàng)建StringBuilder類 private string getMailBody(List<String> list) { StringBuilder result = new StringBuilder(); result.Append("<table><tr><td>學(xué)號</td><td>姓名</td><td>課程</td><td>簽到狀態(tài)</td><td>簽退狀態(tài) </td><td>請假</td><td>標(biāo)記</td><td>遲到</td></tr>"); foreach (string aStr in list){ result.Append("<tr>").Append(aStr).Append("</tr>"); } result.Append("</table>"); return result.ToString();
} 3.設(shè)定郵件發(fā)送時(shí)間,讀取郵件地址和內(nèi)容 if (DateTime.Now.Minute == 10) { string mailBody = getMailBody(record); while (reader.Read()) { string aMail = reader["mail"].ToString(); SendEMail("'" + aMail + "'", "'" + aMail + "'", "考勤信息統(tǒng)計(jì)", "" + mailBody + ""); } }
myconn.Close(); DataTime.Now. xx 可以按照自己的需求去選擇發(fā)送郵件的間隔
3.對SendEmail()方法進(jìn)行編寫
public void SendEMail(string To1, string CC1, /*string BC1,*/ string Subject1, string Body1) MailMessage msg = new MailMessage("xxxx@qq.com", To1); msg.Priority = MailPriority.High;//發(fā)送郵件的優(yōu)先等級 SmtpClient c = new SmtpClient("smtp.qq.com", 587); System.Net.NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("xxxxx@qq.com", "xxxxxx");//用戶名與SMTP授權(quán)碼 c.Credentials = basicAuthenticationInfo; c.EnableSsl = true;//啟用SSL加密
4.新建一個(gè)web窗體,運(yùn)行程序 
|