做一個給自己手機免費發送“天氣預報”信息的軟件

? ? ? ? ? ? ? 實現一個以下截圖這樣的功能!沒錯,就是你手機可以收到“免費”的天氣預報短信!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

一、在做之前必須了解以下四個功能:

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.pswp.cn/news/376516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376516.shtml
英文地址,請注明出處:http://en.pswp.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;我也樂意。在員…