做一个给自己手机免费发送“天气预报”信息的软件

              实现一个以下截图这样的功能!没错,就是你手机可以收到“免费”的天气预报短信!

                                            

一、在做之前必须了解以下四个功能:

1、WebService

2、Quartz.Net(定时任务框架)

3、SMTP:简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式

4、开通139免费邮箱(移动),或者132(联通)的都可以,开通很简单,百度:输入“移动(联通)邮箱”

     (因为是免费的,所以你必须开通免费的手机邮箱,收短信不扣费,不然你还得做“短信猫”类似的接口,成本太高。)

二、使用MVC3开发(或者使用WebForm、Winform也可以,最近本人一直用MVC3开发项目)

1、在项目中右键添加Web服务引用(地址为:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx)

     这个网站提供很多免费的Web接口(这个是天气预报的)。

  

2、点击确定按钮,也可以自己重命名(这里默认即可)

  

3、接下来就得使用到Quartz.Net(下载Quartz.Net.dll,如果有需要,留言就行。)

     在Global.asax中,Application_Start()方法中写定时器的代码。

        private IScheduler sched;
protected void Application_Start()
        {
//作为可配置的,所以在Web.Config中进行配置,indexStarHour是执行的小时,indexStartMin是执行的分钟。
            //这里使用的是每天的**:**,几点几分的形式。
            int indexStartHour = Convert.ToInt32(ConfigurationManager.AppSettings["IndexStartHour"]);
int indexStartMin = Convert.ToInt32(ConfigurationManager.AppSettings["IndexStartMin"]);
 ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
            //“DoWeather”这个类进行执行计划的内容,实现了IJob接口。
JobDetail job = new JobDetail("job1", "group1", typeof(DoWeather));
//方法:
TriggerUtils.MakeDailyTrigger(每天的几点几分执行任务),还有很多的方法,如每周,或者每隔几分钟执行几次。
Trigger trigger = TriggerUtils.MakeDailyTrigger("tigger1", indexStartHour, indexStartMin);//每天*点*分执行
 trigger.JobName = "job1"; trigger.JobGroup = "group1"; trigger.Group = "group1"; sched.AddJob(job, true); sched.ScheduleJob(trigger); sched.Start();
       }
 

               记得还要在Application_End()中进行关闭  ,所以sched得为全局的变量。

        protected void Application_End(object sender, EventArgs e){sched.Shutdown(true);}

 

    4、建一个DoWeather类用于执行你指定的计划(每天的几点几分进行发送天气预报到你的手机)

         记得引用Quartz的.dll 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using Quartz;namespace LJZCWeather
{public class DoWeather : IJob{public void Execute(JobExecutionContext context){DoIndex();}public void DoIndex(){//使用的是163服务器(因为我的邮箱是@163.com的 )string strSmtpServer = "smtp.163.com";//信息来自哪个邮箱(自己的邮箱)string StrFrom = "自己的邮箱@163.com";//自己邮箱的密码string strFromPass = "密码";//主题string strSubject = "田鑫制作(近三天)天气预报软件:";//要发送去哪里,自己注册的手机邮箱,添加数组:可以放多个邮箱(家人也可以享受这个功能)string[] strto = { "你的联通号码@wo.com.cn", "你的移动号码@139.com" };//发送的内容string content = null;string[] Weath = null;//我这里使用的缓存技术,因为免费的用户使用的话不能长时间的获取数据(人家的服务器受不了啊)!            if (HttpRuntime.Cache["We"] == null){//调用Web服务,得到你所需要的内容,我是济南的,所以CityCode是“937"//找自己对应的城市,调用getRegionProvince ()获得省份之后再调用getSupportCityString()获得自己城市的CodeServiceReference1.WeatherWSSoapClient s = new ServiceReference1.WeatherWSSoapClient("WeatherWSSoap");Weath = s.getWeather("937", "");HttpRuntime.Cache.Insert("We", Weath, null, DateTime.Now.AddHours(3), TimeSpan.Zero);}else{Weath = (string[])HttpRuntime.Cache["We"];}if (Weath.Length > 1){for (int i = 0; i < Weath.Length; i++){//今天的天气状况string TodayWeather = Weath[7].ToString();string TodayWenDU = Weath[8].ToString() + Weath[9].ToString();//明天的天气状况string NextWeather = Weath[12].ToString();string NextWenDU = Weath[13].ToString() + Weath[14].ToString();//后天的天气状况string HoutianWeather = Weath[17].ToString();string HoutianWenDU = Weath[18].ToString() + Weath[19].ToString();//短信接收到的内容content = "济南天气:" + TodayWeather + TodayWenDU + "," + "\r\n" + NextWeather + NextWenDU + "," + "\r\n" + HoutianWeather + HoutianWenDU;}}for (int i = 0; i < strto.Length; i++){//调用SendSMTPEMail()进行发送邮箱(手机邮箱)this.SendSMTPEMail(strSmtpServer, StrFrom, strFromPass, strto[i], strSubject, content);}}//发送邮箱方法private bool SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody){try{System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(strSmtpServer);client.UseDefaultCredentials = false;client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(strFrom, strto, strSubject, strBody);message.BodyEncoding = System.Text.Encoding.UTF8;message.IsBodyHtml = true;client.Send(message);return true;}catch (Exception ex){string ms = ex.Message;return false;}}}
}

  

    5、还有一点别忘了,appSettings配置信息。

  <appSettings>    <add key="IndexStartHour" value="11"/><add key="IndexStartMin" value="25"/></appSettings>

    6、大功告成!自己试试,如果遇到问题请留言。如果真收到短信了:右下角“推荐”一个吧!

 

转载于:https://www.cnblogs.com/tianxinbest/p/3210320.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《拾牙慧者博客检索指南》

本指南主要概括一下我的博客所涉及到的一些方面&#xff0c;以及给出每个专栏的索引&#xff0c;方便以后自己以及他人的查找相关文章。 专栏总览《春秋招面经》《基础技术栈》《数据库学习笔记》《嵌入式编程经验》《图像处理与计算机视觉经验》《机器学习笔记与数学》《算法与…

Android_Chronometer计时器

最近做一个项目用到Handler 和Message &#xff0c;开始时不是很明白&#xff0c;不了解其中的内部机制&#xff0c;所以开发起来有点难度&#xff0c;之后自己找了Android 时间服务 这一节的内容&#xff0c;总结了一点关于时间的知识&#xff0c;在这里大概写一下&#xff0c…

补码

3&#xff0e;经常使用数值编码 因为机器数在计算时&#xff0c;假设符号位和数值位同一时候參与运算&#xff0c;则可能会产生错误结果&#xff1b;而假设单独考虑符号问题&#xff0c;又会添加运算器件的实现难度。因此&#xff0c;为了使计算机可以方便地对数值进行各种算术…

置顶 | wolai博客

最近用wolai记录笔记较多&#xff0c;这里放一下我wolai的地址&#xff0c;当然csdn这边也会同时更文。 hanhan的博客

深入研究Clang(四) Clang编译器的简单分析

作者&#xff1a;史宁宁&#xff08;snsn1984&#xff09;首先我们确定下Clang编译器的具体内容和涵盖范围。之前在《LLVM每日谈之二十 Everything && Clang driver 》中曾经提到过&#xff0c;Clang driver&#xff08;命令行表示是clang&#xff09;和Clang前端&…

Expression Trees 参数简化查询

ASP.NET MVC 引入了 ModelBinder 技术&#xff0c;让我们可以在 Action 中以强类型参数的形式接收 Request 中的数据&#xff0c;极大的方便了我们的编程&#xff0c;提高了生产力。在查询 Action 中&#xff0c;我们可以将 Expression Trees 用作参数&#xff0c;通过自定义的…

为你的程序添加监听器

平时在写程序时经常会遇到监听器&#xff0c;比如按钮的click监听器&#xff0c;按键监听器等等。而android中的监听器和java中的回调函数是同一个概念&#xff0c;都是在底层代码中定义一个接口来调用高层的代码。那么什么是回调函数呢&#xff1f;网上说的是“在WINDOWS中&am…

图像处理

android图像处理系列之四&#xff0d;&#xff0d;给图片添加边框&#xff08;上&#xff09; http://www.oschina.net/question/157182_40586 android图像处理系列之六&#xff0d;&#xff0d;给图片添加边框&#xff08;下&#xff09;&#xff0d;图片叠加 http://www.osc…

Git push 时每次都需要密码的疑惑

2015.1.13更新&#xff1a; 在本地搭建Git服务器时&#xff0c;也是有每次操作需要密码的情况。 是因为每次做推送动作时&#xff0c;Git需要认证你是好人。所以需要密码。 可以在 /home/username/.ssh/authorized_keys 文件里添加你的 ssh 公钥。一行一个。这样就可以在你push…

ruby字符串处理

1. str"abc123"puts str[0].chr > a puts str[0] >a的ascii码 2.中文字符串的正则表达式 文本编码:utf-8 文件第一行&#xff1a;#encoding:urf-8 require "iconv" str"八万"reg/(.)万/datareg.match(str)result Iconv.i…

PHP+七牛云存储上传图片代码片段

2014年11月14日 16:37:51 第一段代码是上传单个图片的,第二个是上传多个图片的 1 //上传到七牛2 //单个文件3 //formname: 表单名字; pre: 图片Url中显示的图片名字(也就是七牛中的key)4 public function upImage($formname, $pre)5 {6 if (empty($_FI…

【PS】Gold words tutorials 赤金字教程

material_01material_021. White background and black words.The font of "Laker" is Teenick, and "Huang" is 中國龍粗魏碑2.Open material_01 and select a part of it.Copy and paste the part part into our workspace.You can drag and move to pa…

iOS 键盘的关闭

iOS 键盘的关闭 //通过委托来放弃 “第一响应者” #pragma mark - UITextField Delegate Method -(BOOL)textFieldShouldReturn:(UITextField*)textField {[textField resignFirstResponder];return YES; } //通过委托来放弃 “第一响应者” #pragma mark - UITextView Delegat…

递归与分治

今天总算把第三章递归与分治看完了&#xff0c;呵呵&#xff0c;没想到开头就给我来了点打击&#xff0c;看以后不认真学还真不行了&#xff01; 为了祝贺初战告捷&#xff0c;把几个简单的题目贴上来吧&#xff0c;纪念一下&#xff01; 《整数因子分解》 大于1的正整数n可以分…

Android中的Handler机制

直接在UI线程中开启子线程来更新TextView显示的内容&#xff0c;运行程序我们会发现&#xff0c;如下错 误&#xff1a;android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.翻译过来就是&…

初来乍到

从今天开始&#xff0c;我也加入博客园这个大家庭了&#xff0c;希望能和大家一起学习IT技术&#xff0c;共同进步。小弟初来乍到&#xff0c;望大家能多多关照&#xff01;转载于:https://www.cnblogs.com/markwave/p/3227777.html

JQuery学习四(过滤选择器)

&#xff1a;first选择第一个元素。$&#xff08;“div:first”&#xff09;进行选择第一个<div> :last 选择最后一个最后一个元素 $&#xff08;"div:last"&#xff09;选取最后一个<div> [:not(选择器&#xff09;] 选择不满足“选择器”条件的元素 $…

160 - 1 Acid burn

环境&#xff1a;Windows XP sp3 先打开&#xff0c;看看长什么样&#xff1a; OD载入&#xff0c;右键->查找->所有参考文本字串 找到Sorry,The serial is incorect 找到后就在反汇编窗口跟随&#xff0c;往上翻&#xff1a; 0042F998 /. 55 push ebp 0…

跟树有关的数据结构学习系列之概览

1.Binary Search Tree&#xff08;BST&#xff09; 二叉搜索树 2.B-Tree 3.BTree 4.B*Tree转载于:https://www.cnblogs.com/devindong/p/3233041.html

在社会实践中长本领

暑假回到家&#xff0c;家里要我在自家店里帮忙&#xff0c;做员工。因为我家跟舅舅家合资开了一家家禽冻品批发部&#xff0c;生意兴旺&#xff0c;越做越大&#xff0c;忙得不可开交。在自家店里做员工&#xff0c;当然&#xff0c;家里人都很高兴&#xff0c;我也乐意。在员…