您好,登录后才能下订单哦!
请求超时!
请点击 重新获取二维码这篇文章主要介绍了.NET定时发送邮件代码的案例分析,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生日的时候,但是我们又怕到时候忘记了,这时就应该
使用发送定时邮件的功能,但是这个定时发送邮件功能是怎么实现的呢?下面用两种方式实现.net定时发送邮件代码,具体请看下面内容。
实现思路、需求添加一个全局应用程序类Global.asax
代码会在访问网站时运行
Global.asax代码:
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 System.Timers.Timer timer = new System.Timers.Timer();//设计时间间隔,如果一个小时执行一次就改为 timer.Elapsed += new System.Timers.ElapsedEventHandler(Send); timer.AutoReset = true; timer.Enabled = true; } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 System.Threading.Thread.Sleep(); string strUrl = " 服务器地址"; System.Net.HttpWebRequest _HttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(strUrl); System.Net.HttpWebResponse _HttpWebResponse = (System.Net.HttpWebResponse)_HttpWebRequest.GetResponse(); System.IO.Stream _Stream = _HttpWebResponse.GetResponseStream();//得到回写的字节流 _HttpWebResponse.Close(); } void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 } void Session_Start(object sender, EventArgs e) { // 在新会话启动时运行的代码 } void Session_End(object sender, EventArgs e) { // 在会话结束时运行的代码。 // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer // 或 SQLServer,则不引发该事件。 } private void Send(object sender, System.Timers.ElapsedEventArgs e) { switch (DateTime.Now.Hour) { case : case : SendEMail(); break; //default: // SendEMail(); // break; } } private void SendEMail() { string mailFrom = System.Configuration.ConfigurationManager.AppSettings["MailFrom"].ToString(); string mailUser = System.Configuration.ConfigurationManager.AppSettings["MailUser"].ToString(); string mailPassword = System.Configuration.ConfigurationManager.AppSettings["MailPassword"].ToString(); string hostIP = System.Configuration.ConfigurationManager.AppSettings["MailHost"].ToString(); List<string> mailAddress = new List<string>(); string mailSubjct = "邮件主题"; string mailBody = "邮件内容:"; mailAddress.Add("邮件地址");string strReturn = sendMail(mailSubjct, mailBody, mailFrom, mailAddress, hostIP, mailUser, mailPassword, false); }
sendMail方法
public static string sendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string hostIP, string username, string password, bool ssl) { string str = ""; try { MailMessage message = new MailMessage { IsBodyHtml = true, Subject = mailSubjct, Body = mailBody, From = new MailAddress(mailFrom) }; for (int i = ; i < mailAddress.Count; i++) { message.To.Add(mailAddress[i]); } SmtpClient client = new SmtpClient { EnableSsl = ssl, UseDefaultCredentials = false }; NetworkCredential credential = new NetworkCredential(username, password); client.Credentials = credential; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Host = hostIP; client.Port = x; client.Send(message); } catch (Exception exception) { str = exception.Message; } return str; }
第二种方式:
定时发邮件可以用Timer来设置时间,放在了Global.asax的Application_Start里面
using System.Net.Mail; using System.Timers; protected void Application_Start(object sender, EventArgs e) { 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) { MailMessage message = new MailMessage(); message.From = Messagefrom; message.To.Add(MessageTo); //收件人邮箱地址可以是多个以实现群发 message.Subject = MessageSubject; message.Body = MessageBody; message.IsBodyHtml = true; //是否为html格式 message.Priority = MailPriority.High; //发送邮件的优先等级 SmtpClient sc = new SmtpClient(); sc.Host = "smtp.sina.com"; //指定发送邮件的服务器地址或IP sc.Port = 25; //指定发送邮件端口 //sc.UseDefaultCredentials = true; //sc.EnableSsl = true; sc.Credentials = new System.Net.NetworkCredential(“**@**”, "密码"); //指定登录服务器的用户名和密码 sc.Send(message); //发送邮件 }
到此全部代码就写完了。
创建一个控制台程序,生成一个exe 采用windows的计划任务程序指定每天的某个时间点发送思路就是这个思路比服务简单
感谢你能够认真阅读完这篇文章,希望小编分享.NET定时发送邮件代码的案例分析内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
聚圣源物流公司起名字大全免费不眠之夜小说起名小程序源码五行起名查五行缺什么陈姓起的名字翡翠店取名起名大全葛氏女孩小孩起名锴起名字上海池上便当战地3中文版剑灵补丁川航8633事件国学起名男宝怎样起一个水果店的名字物业公司名称起名大全无双庶子人间情缘两字起名开店可以随便起名吗刘嘉男孩起名起名学在五行中字典电梯公司起名大全集公司起名测试华吉起名大全代表健康平安的字唢呐大全英语书信格式你敢娶我敢嫁给家具起名字好听海棠依旧电视剧地狱客栈第一季全集淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费