有说到要做一个winfrom的程式来自动排程发送预约成功的短讯。
结构如下图:
其中Form1窗体的界面如下:
主要是调用web references也就是前面写到的同一发送。webservice.
具体的实现当然是用一个Timer去隔时间的检测预约时间是否到达,到达了就调用webservice发送短讯。当然有一些记录log的mail提示的,就都包含在了Module.cs中。下面主要看看该类代码如下:
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; using System.IO; using System.Net.Mail; namespace Auto { public class Module { } #region DBUtility public static class DBUtility { private static SqlConnection scn = new SqlConnection("Data Source=10.1.1.128;Initial Catalog=SMS;Persist Security Info=True;User ID=smsuser;Password=smsuser"); public static DataTable GetDataTableBySql(string SqlCommnad) { if (DBUtility.scn.State != ConnectionState.Open) scn.Open(); SqlCommand cmd = new SqlCommand(SqlCommnad, scn); DataSet ds = new DataSet(); SqlDataAdapter ada = new SqlDataAdapter(cmd); ada.Fill(ds); DataTable dt = ds.Tables[0]; if (DBUtility.scn.State == ConnectionState.Open) scn.Close(); return dt; } public static Int32 ExecuteNonQuery(string SqlCommnad) { if (DBUtility.scn.State != ConnectionState.Open) scn.Open(); SqlCommand cmd = new SqlCommand(SqlCommnad, scn); Int32 affectedRow = cmd.ExecuteNonQuery(); if (DBUtility.scn.State == ConnectionState.Open) scn.Close(); return affectedRow; } } #endregion #region LogUtility /// <summary> /// Record any log in specific path /// </summary> public class LogUtility { string strLogPath =@"C:\SMS\LogFiles\"; private static LogUtility LogUtilityInstance = null; private static object UtilityLock = typeof(LogUtility); private LogUtility() { } public static LogUtility GetInstance() { lock (UtilityLock) { if (LogUtilityInstance == null) LogUtilityInstance = new LogUtility(); return LogUtilityInstance; } } /// <summary> /// Write error log to specific path /// </summary> /// <param name="LogHeader">the message that u want to add before exception message</param> /// <param name="ex">Exception</param> public void HandleExceptionLog(string LogHeader, Exception ex) { System.Text.StringBuilder sbLogHeader = new System.Text.StringBuilder(128); System.Text.StringBuilder sbLogMessage = new System.Text.StringBuilder(); sbLogHeader.Append(strLogPath); sbLogHeader.Append(System.DateTime.Now.ToString("yyyy.MM.dd-HH")); sbLogHeader.Append(".log"); try { sbLogMessage.Append("→"); sbLogMessage.Append(System.DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss") + "-"); sbLogMessage.Append(LogHeader); sbLogMessage.Append("↓" + Environment.NewLine); if (ex != null) { sbLogMessage.Append(ex.Message + "↓" + Environment.NewLine); sbLogMessage.Append(ex.StackTrace + "←" + Environment.NewLine); FileUtility.GetInstance().AppendTextToFile(sbLogHeader.ToString(), sbLogMessage.ToString()); } } catch { } finally { sbLogHeader = null; sbLogMessage = null; } } public void HandleExceptionLog(string LogHeader, string msg) { System.Text.StringBuilder sbLogHeader = new System.Text.StringBuilder(128); System.Text.StringBuilder sbLogMessage = new System.Text.StringBuilder(); sbLogHeader.Append(strLogPath); sbLogHeader.Append(System.DateTime.Now.ToString("yyyy.MM.dd-HH")); sbLogHeader.Append(".log"); try { sbLogMessage.Append("→"); sbLogMessage.Append(System.DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss") + "-"); sbLogMessage.Append(LogHeader); sbLogMessage.Append("↓" + Environment.NewLine); if (msg != null) { sbLogMessage.Append(msg + "←" + Environment.NewLine); FileUtility.GetInstance().AppendTextToFile(sbLogHeader.ToString(), sbLogMessage.ToString()); } } catch { } finally { sbLogHeader = null; sbLogMessage = null; } } } #endregion #region FileUtility public class FileUtility { private static FileUtility FileUtilityInstance = null; private static object UtilityLock = typeof(FileUtility); private FileUtility() { } public static FileUtility GetInstance() { lock (UtilityLock) { if (FileUtilityInstance == null) FileUtilityInstance = new FileUtility(); return FileUtilityInstance; } } public void AppendTextToFile(string fileName, string LogText) { System.Threading.Monitor.Enter(this); StreamWriter LogFileStream; if (this.MakeDirectory(fileName)) { try { if (File.Exists(fileName)) { LogFileStream = File.AppendText(fileName); } else { LogFileStream = File.CreateText(fileName); } if (LogFileStream != null) { LogFileStream.Write(LogText); LogFileStream.Flush(); LogFileStream.Close(); } } catch { } finally { LogFileStream = null; System.Threading.Monitor.Exit(this); } } } private bool MakeDirectory(string FolderPath) { bool IsOK = false; System.Text.StringBuilder sbFilePath = new System.Text.StringBuilder(128); char seperator = '\\'; string[] FolderSplit = FolderPath.Split(seperator); try { for (int cnt = 0; cnt < FolderSplit.Length - 2; cnt++) { sbFilePath.Append(FolderSplit[cnt] + "\\"); if (!Directory.Exists(sbFilePath.ToString())) { Directory.CreateDirectory(sbFilePath.ToString()); } } IsOK = true; } catch { IsOK = false; } finally { FolderSplit = null; sbFilePath = null; } return IsOK; } } #endregion #region MailUtility /// <summary> /// 寄送mail /// </summary> /// <param name="strMailTo">收件者</param> /// <param name="strSubject">主旨</param> /// <param name="strbody">內容</param> /// <param name="strMailForm">寄件者</param> /// <param name="cc"></param> /// <returns></returns> public static class MailUtility { public static bool sendEMail(string strMailTo, string strSubject, string strbody, string strMailForm, string cc) { try { MailMessage message = new MailMessage(); message.Body = strbody; //寄件者 if (strMailForm.Trim() == "") { MailAddress ma = new MailAddress("service@adgroup.com.tw"); message.From = ma; message.Subject = strSubject; } else { MailAddress ma = new MailAddress(strMailForm); message.From = ma; message.Subject = strSubject; } if (cc != "") { message.CC.Add(cc); } //收件者 message.To.Add(strMailTo); //mailserver SmtpClient sc = new SmtpClient("TWEXCAS02.adgroup.com.tw"); //System.Net.NetworkCredential nc = new System.Net.NetworkCredential("systemlead", "123456", "DOMAIN"); //sc.Credentials = nc; sc.Send(message); LogUtility.GetInstance().HandleExceptionLog("mail", strMailTo); return true; } catch (Exception ex) { LogUtility.GetInstance().HandleExceptionLog("mail", ex); return false; throw; } } } #endregion }
SMS(短讯服务中心)[四]-----winfrom
最新推荐文章于 2022-11-04 16:59:40 发布