ASP.NET 定时发送邮件 实现方法(包括确认邮件)
2011-02-23 18:11
791 查看
功能描述:
在指定时间(如上午9点)向订阅图书的邮箱发送订阅咨询。
细节:1.订阅条件,包括多种检索图书的条件,存放在XML表中
2.定时发送,时间存放在config文件中
3.订阅提交时首先有个确认邮件,里面包括确认链接。确认后,才将此订阅写入数据库中
4.数据库中在user表存放订阅标志(1为订阅0为取消订阅),订阅条件(处理好的条件语句,方便检索图书),订阅接收邮箱(默认为注册时邮箱),订阅关键词。
备注:初学C#,只是说说自己的解决方法。而且用GLOBAL文件写的定时器存在一个问题:当程序在一定时间内(IIS设置)没有运行,或者停止运行时,没有触发。我想,自己写个wf程序,用 windows计划任务实现定时器应该更加合理。
核心代码:
1.订阅条件下拉框填充
2.定时发送代码
3.邮件类,包括发送确认邮件
在指定时间(如上午9点)向订阅图书的邮箱发送订阅咨询。
细节:1.订阅条件,包括多种检索图书的条件,存放在XML表中
2.定时发送,时间存放在config文件中
3.订阅提交时首先有个确认邮件,里面包括确认链接。确认后,才将此订阅写入数据库中
4.数据库中在user表存放订阅标志(1为订阅0为取消订阅),订阅条件(处理好的条件语句,方便检索图书),订阅接收邮箱(默认为注册时邮箱),订阅关键词。
备注:初学C#,只是说说自己的解决方法。而且用GLOBAL文件写的定时器存在一个问题:当程序在一定时间内(IIS设置)没有运行,或者停止运行时,没有触发。我想,自己写个wf程序,用 windows计划任务实现定时器应该更加合理。
核心代码:
1.订阅条件下拉框填充
/// <summary> /// 订阅关键词下拉选择框 /// </summary> private void InitSearch() { foreach (DataRow dr in dsField.Tables["QUICK"].Rows) { sbOption.AppendFormat("<option value='{0}'>{1}</option>", dr["value"], dr["name"]); } ltlField.Text = sbOption.ToString(); sbOption = null; dsField.Dispose(); }
2.定时发送代码
public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { Application["VirtualPath"] = HttpContext.Current.Request.ApplicationPath; //定时发送邮件 Timer t = new Timer(60000);//设计时间间隔,如果一个小时执行一次就改为3600000 ,这里一分钟调用一次 t.Elapsed += new ElapsedEventHandler(t_Elapsed); t.AutoReset = true; t.Enabled = true; } //定时发送邮件 private void t_Elapsed(object sender, ElapsedEventArgs e) { int sendTime_Hour = Convert.ToInt32(ConfigurationSettings.AppSettings["SendTime"].ToString());// 发送时间 int now_Hour = Convert.ToInt32(DateTime.Now.Hour.ToString()); int now_Minute = Convert.ToInt32(DateTime.Now.Minute.ToString()); int absolute = 1;//差距值,单位为分钟 if (((now_Hour == sendTime_Hour - 1) && (now_Minute >= 60 - absolute)) || ((now_Hour == sendTime_Hour) && (now_Minute <= absolute))) //时间判断 { try { //定时发送邮件 Mail.mailSend(); } catch (Exception ex) { throw new Exception(ex.Message); } } } }
3.邮件类,包括发送确认邮件
public class Mail { public static void mailSend() { string strHost = ConfigurationSettings.AppSettings["MailHost"].ToString(); //STMP服务器地址 string strAccount = ConfigurationSettings.AppSettings["MailUsername"].ToString(); //SMTP服务帐号 string strPwd =ConfigurationSettings.AppSettings["MailPassword"].ToString(); //SMTP服务密码 string strFrom = ConfigurationSettings.AppSettings["MailFrom"].ToString(); //发送方邮件地址 string Subject = ConfigurationSettings.AppSettings["subJect"].ToString();//邮件主题 string to=""; //接收放邮件地址 string Condition = "";//订阅条件 string key = "";//订阅条件关键词 //获取订阅邮件地址 //1为订阅;0为未订阅 DataTable UserTo = new DataTable(); UserTo=SqlHelper.GetDataTable("select * from [User] where subScribe='1'"); if(UserTo.Rows.Count!=0) { foreach (DataRow dr in UserTo.Rows) { key = dr["subSub"].ToString().Trim(); Condition = dr["subWhere"].ToString().Trim(); to = dr["subMail"].ToString().Trim(); SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式 _smtpClient.Host = strHost; ;//指定SMTP服务器 _smtpClient.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用户名和密码 MailMessage _mailMessage = new MailMessage(strFrom, to); _mailMessage.Subject = Subject;//主题 _mailMessage.Body =getMailHtml(Condition,key);//内容 _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码 _mailMessage.IsBodyHtml = true;//设置为HTML格式 _mailMessage.Priority = MailPriority.High;//优先级 try { _smtpClient.Send(_mailMessage); } catch { } } } } /// <summary> /// 赠送礼品 /// </summary> /// <param name="RecMail">接收礼品地址</param> /// <param name="Subject">主题</param> /// <param name="MailBody">内容</param> /// <param name="AttachMent">图书(附件)</param> public void mailSendGift(string RecMail,string Subject,string MailBody,string AttachMent) { string strHost = ConfigurationSettings.AppSettings["MailHost"].ToString(); //STMP服务器地址 string strAccount = ConfigurationSettings.AppSettings["MailUsername"].ToString(); //SMTP服务帐号 string strPwd = ConfigurationSettings.AppSettings["MailPassword"].ToString(); //SMTP服务密码 string strFrom = ConfigurationSettings.AppSettings["MailFrom"].ToString(); //发送方邮件地址 string to = RecMail.ToString().Trim(); //接收放邮件地址 SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式 _smtpClient.Host = strHost; ;//指定SMTP服务器 _smtpClient.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用户名和密码 System.Net.Mail.Attachment objAttachMent = new System.Net.Mail.Attachment(AttachMent.ToString()); MailMessage _mailMessage = new MailMessage(strFrom, to); _mailMessage.Subject = Subject;//主题 _mailMessage.Body = MailBody.ToString().Trim();//内容 _mailMessage.Attachments.Add(objAttachMent);//将附件附加到邮件消息对象中 _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码 _mailMessage.IsBodyHtml = true;//设置为HTML格式 _mailMessage.Priority = MailPriority.High;//优先级 try { _smtpClient.Send(_mailMessage); } catch { } } /// <summary> /// 发送确认邮件 /// </summary> /// <param name="subScribe">标志是否订阅1订阅0取消订阅</param> /// <param name="subWhere">订阅条件SQL语句</param> /// <param name="subMail">订阅接收地址</param> /// <param name="subSub">订阅条件</param> public void mailSendQuery(string subScribe, string subWhere, string subMail, string subSub, string UserName) { string strHost = ConfigurationSettings.AppSettings["MailHost"].ToString(); //STMP服务器地址 string strAccount = ConfigurationSettings.AppSettings["MailUsername"].ToString(); //SMTP服务帐号 string strPwd = ConfigurationSettings.AppSettings["MailPassword"].ToString(); //SMTP服务密码 string strFrom = ConfigurationSettings.AppSettings["MailFrom"].ToString(); //发送方邮件地址 string Subject = ConfigurationSettings.AppSettings["subJect"].ToString()+"—确认邮件";//邮件主题 SmtpClient _smtpClient = new SmtpClient(); _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式 _smtpClient.Host = strHost; ;//指定SMTP服务器 _smtpClient.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);//用户名和密码 MailMessage _mailMessage = new MailMessage(strFrom, subMail); _mailMessage.Subject = Subject;//主题 _mailMessage.Body = getMailHtmlQuery(subScribe, subWhere, subMail, subSub, UserName);//内容 _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码 _mailMessage.IsBodyHtml = true;//设置为HTML格式 _mailMessage.Priority = MailPriority.High;//优先级 try { _smtpClient.Send(_mailMessage); } catch { } }
相关文章推荐
- asp.net基于windows服务实现定时发送邮件的方法
- asp.net基于windows服务实现定时发送邮件的方法
- asp.net基于windows服务实现定时发送邮件的方法
- Asp.Net定时发送邮件方法(使用线程的方法)
- asp.net发送邮件实现方法
- Asp.Net定时发送邮件方法----(使用线程的方法)-asp.net关注
- 详解Asp.Net定时发送邮件方法
- asp.net发送邮件实现方法
- asp.net一个实现发送邮件的方法
- 在ASP.NET Core 中发送邮件的实现方法(必看篇)
- ASP.NET ---- 实现邮件发送
- ASP.NET 实现邮件发送和接受的功能(Sockets)
- asp.net实现一个用户进行注册的时候同时发送一个邮件到注册人的邮箱,通过发送的邮箱链接来激活该帐号
- asp.net 邮件发送提醒功能(接收方包括QQ邮箱等)
- ASP中实现定时发送邮件的代码分享
- Asp.net发送邮件的两种方法
- Asp.net 自动发送邮件的方法
- asp.net能实现身份认证的EMAIL发送方法(c#版本)
- ASP.NET 页面刷新的实现方法(包括html,js)
- Asp.net 自动发送邮件的方法