控制台編寫排程

using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
using System.Configuration;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Timers;
using System.Threading;

namespace MailApplication
{
    class Program
    {
        public static bool IsSendMail = false;
        private int Interval = 1000;              //时间间隔,单位毫秒
        private int Time = 0;                     //所显示的时间  
        public System.Threading.Thread timer = null;
        public static int checktimes = 0;         //計算檢查次數
        public static int copytimes = 0;//        //計算copy次數  

        private void Timer1()
        {
            while (true)
            {
                Display();                       //显示秒表计数
                Thread.Sleep(Interval);         //等待1秒后再执行Timer()刷新计数
                Time++;                         //秒数加1
            }
        }

        private void Display()
        {
            if (Time % 5 == 1)
            {
                Console.Clear();
                Console.SetCursorPosition(0, 0);
                Console.Write("治具管理系統正在發送Mail,請不要關閉窗口...");
            }
            Console.SetCursorPosition(0, 1);
            Console.Write("Time:" + Time.ToString() + "");
        }

        public void Start()
        {

            timer = new Thread(Timer1);             //新建一个线程,该线程调用Timer()
            timer.Start();                          //启动线程
            Console.CursorVisible = false;          //隐藏光标
            //Console.ReadKey();                   //等待按任意键退出

        }

        static void Main(string[] args)
        {
            Console.Write("治具管理系統發送Mail,請不要關閉窗口...");

            //建立線程監控
            Program sw = new Program();
            sw.Start();

            //發送郵件對象
            SendEmail objemail = new SendEmail();

            //Mail服務器

            objemail.Server = ConfigurationManager.AppSettings["MailServer"];
            //端口號

            objemail.Port = Convert.ToInt32(ConfigurationManager.AppSettings["MailPort"]);
            //寄件人地址
            objemail.From = ConfigurationManager.AppSettings["MailFrom"];
            //寄件人名稱

            objemail.FromName = ConfigurationManager.AppSettings["MailFromName"];
            //Mail主旨
            objemail.Subject = ConfigurationManager.AppSettings["MailSubject"];

            // 收件人

            //根據配置文件選擇收件人 Y:發送給群組;其他:發送給配置文件中的人員
            if (ConfigurationManager.AppSettings["MailToSwitch"] == "Y")
            {
                //Mail群組               
                objemail.To = "una_zou@compalcomm.com";
            }
            else
            {
                //配置文件中的收件人

                objemail.To = ConfigurationManager.AppSettings["MailTo"];
            }

            objemail.IsHtml = true;

            //  Email 等級
            objemail.Priority = System.Net.Mail.MailPriority.Normal;
            //發送

            //增加cc人員
            //objemail.CC = ConfigurationManager.AppSettings["MailccTo"];

            if (ConfigurationManager.AppSettings["MailccSwitch"] == "Y")
            {
                //Mail群組   
                objemail.CC = "una_zou@compalcomm.com";
            }
            else
            {
                //配置文件中的收件人
                objemail.CC = ConfigurationManager.AppSettings["MailccTo"];
            }

            //獲得Mail的正文
            String strBody = GetHtm();
            //設置Mail正文
            objemail.Body = strBody;
            //objemail.Sendccmails();
            if (IsSendMail)
            {
                objemail.Sendmail();
            }

            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("正在執行中...");
            }

            Console.WriteLine("發送成功...");

            sw.timer.Abort();       //终止线程,用于停止秒表

        }

        public static string GetHtm()
        {
            // 讀取 HTML 模板
            String strPathhtm = "Templete/Schedule.htm";
            System.IO.StreamReader strReaderHtm = System.IO.File.OpenText(strPathhtm);
            String strHtm = strReaderHtm.ReadToEnd();

            //讀取HTML項目內容1
            string strPathBlock1 = "Templete/SchedulePlace1.htm";
            System.IO.StreamReader strReaderBlock1 = System.IO.File.OpenText(strPathBlock1);
            string strHtmBlock1 = strReaderBlock1.ReadToEnd();


            strHtm = strHtm.Replace("##siteid##", ConfigurationManager.AppSettings["SysSite"]);
            strHtm = strHtm.Replace("#todaydate#", DateTime.Today.ToShortDateString());

            //讀取數據庫
            DataSet ds = new DataSet();
            BLL.Fixture.FixtureMstr FixtureMstrbll = new BLL.Fixture.FixtureMstr();
            ds = FixtureMstrbll.GetListMail(DateTime.Now.ToString("yyyy-MM-dd"));
            if (ds.Tables[0].Rows.Count > 0)
            {
                strHtm = strHtm.Replace("##count##", ds.Tables[0].Rows.Count.ToString());
                IsSendMail = true;

                //替換區域1
                string strPlace1 = ReplaceStatistics(strHtmBlock1, ds);
                strHtm = strHtm.Replace("#ScheduleByPlace1#", strPlace1);
            }
            return strHtm;
        }
        /// <summary>
        /// 模板列表
        /// </summary>
        /// <param name="strHtmBlock"></param>
        /// <param name="ds"></param>
        /// <returns></returns>
        public static string ReplaceStatistics(string strHtmBlock, DataSet ds)
        {
            string DailySchedule = "";
            //循環輸出取出的行值


            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                //增加一個地點的模版
                DailySchedule += strHtmBlock;

                DailySchedule = DailySchedule.Replace("##FIXMSTR_NUMBER##", ds.Tables[0].Rows[i]["FIXMSTR_NUMBER"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_NAME##", ds.Tables[0].Rows[i]["FIXMSTR_NAME"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_MODEL##", ds.Tables[0].Rows[i]["FIXMSTR_MODEL"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_EDITION##", ds.Tables[0].Rows[i]["FIXMSTR_EDITION"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_CHECKWEEK##", ds.Tables[0].Rows[i]["FIXMSTR_CHECKWEEK"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_MARK##", ds.Tables[0].Rows[i]["FIXMSTR_MARK"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_STATUS##", ds.Tables[0].Rows[i]["STATUS"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_LOCATION##", ds.Tables[0].Rows[i]["LOCATION"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_CHECKDATE##", ds.Tables[0].Rows[i]["FIXMSTR_CHECKDATE"].ToString());
                DailySchedule = DailySchedule.Replace("##FIXMSTR_LASTCHECK##", ds.Tables[0].Rows[i]["FIXMSTR_LASTCHECK"].ToString());
                DailySchedule = DailySchedule.Replace("##NextCHECK##", ds.Tables[0].Rows[i]["NextCHECK"].ToString());

            }
            return DailySchedule;
        }

        #region 模板分頁

        public static DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)
        {
            if (PageIndex == 0)
                return dt;
            DataTable newdt = dt.Copy();
            newdt.Clear();

            int rowbegin = (PageIndex - 1) * PageSize;
            int rowend = PageIndex * PageSize;

            if (rowbegin >= dt.Rows.Count)
                return newdt;

            if (rowend > dt.Rows.Count)
                rowend = dt.Rows.Count;
            for (int i = rowbegin; i <= rowend - 1; i++)
            {
                DataRow newdr = newdt.NewRow();
                DataRow dr = dt.Rows[i];
                foreach (DataColumn column in dt.Columns)
                {
                    newdr[column.ColumnName] = dr[column.ColumnName];
                }
                newdt.Rows.Add(newdr);
            }

            return newdt;
        }

        #endregion



    }
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>治具管理系統</title>
    <style type="text/css">
        body
        {
            margin: 0px;
            padding: 0px;
            border: 0px;
        }
        table
        {
            border-collapse: collapse;
        }
        .ScheduleTitle
        {
            font-size: 11.0pt;
            font-weight: 700;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: middle;
            border: 1px solid #000000;
            background: #CCFFFF;
        }
        .SchedulePlace
        {
            font-size: 11.0pt;
            font-weight: 700;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: middle;
            border: 1px solid #000000;
        }
        .ScheduleTopTitle
        {
            font-size: 11.0pt;
             80px;
            font-weight: 700;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: middle;
            border: 1px solid #000000;
            background: #00CCFF;
        }
        .ScheduletotalTitle
        {
            font-size: 11.0pt;
             700px;
            height: 11px;
            font-weight: 500;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: middle;
            border: 1px solid #000000;
            background: #00CCFF;
        }
        .ScheduleItem
        {
            color: #0000D4;
            font-size: 11.0pt;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: top;
            border: 1px solid #000000;
        }
        .ScheduleRest
        {
            font-size: 11.0pt;
            font-weight: 700;
            font-family: Arial, sans-serif;
            text-align: center;
            vertical-align: middle;
            border: 1px solid #000000;
            background: #FF99CC;
        }
        .singleSchedule
        {
            border-color: Black;
            border-style: solid;
            border- 1px;
            border-left: none;
            border-right: none;
            height: 70px;
        }
        .STYLE1
        {
            color: #0000FF;
        }
    </style>
</head>
<body>
    <table border="0" cellpadding="0" cellspacing="0" width="1024">
        <tr>
            <td colspan="10" bgcolor="#FFFFFF" style="text-align: Center; height: 40px; font-size: 16pt">
                治具管理系統提醒郵件(<span class="STYLE1">#todaydate#</span>)
            </td>
        </tr>
    </table>
    <table border="0" cellpadding="0" cellspacing="0" width="1024">
        <td colspan="10" bgcolor="#FFFFFF" style="text-align: left; height: 20px; font-size: 12pt">
            <p>
                Dear all:
            </p>
            <p>
                &nbsp;</p>
        </td>
        <tr>
            <td colspan="10">
                <p>
                    如下是即將到期之設備, 請在到期前三天完成送校。
                </p>
                詳情請參閱 <a href='##siteid##'>治具管理系統</a>
            </td>
        </tr>
        <tr>
            <td colspan="10">
                <p>
                    到期需要校驗數量:##count##
                </p>
            </td>
        </tr>
        <tr>
            <td width="80" class="ScheduleTitle">
                治具編號
            </td>
            <td width="80" class="ScheduleTitle">
                治具名稱
            </td>
            <td width="80" class="ScheduleTitle">
                治具型號
            </td>
            <td width="80" class="ScheduleTitle">
                治具版本
            </td>
            <td width="80" class="ScheduleTitle">
                校驗週期
            </td>
            <td width="80" class="ScheduleTitle">
                治具廠牌
            </td>
            <td width="80" class="ScheduleTitle">
                治具狀態
            </td>
            <td width="80" class="ScheduleTitle">
                庫別
            </td>
            <td width="80" class="ScheduleTitle">
                驗收日期
            </td>
            <td width="80" class="ScheduleTitle">
                最後校驗日期
            </td>
            <td width="80" class="ScheduleTitle">
                下次校驗日期
            </td>
        </tr>
         #ScheduleByPlace1# 
    </table>
</body>
</html>
        <tr>
            <td class="ScheduleItem">
                ##FIXMSTR_NUMBER##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_NAME##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_MODEL##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_EDITION##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_CHECKWEEK##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_MARK##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_STATUS##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_LOCATION##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_CHECKDATE##
            </td>
            <td class="ScheduleItem">
                ##FIXMSTR_LASTCHECK##
            </td>
            <td class="ScheduleItem">
                ##NextCHECK##
            </td>
        </tr>
原文地址:https://www.cnblogs.com/xw2cc1314/p/3298911.html