亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#郵件定時群發工具Atilia用法實例

2020-01-24 01:31:36
字體:
來源:轉載
供稿:網友

本文實例講述了C#郵件定時群發工具Atilia用法。分享給大家供大家參考。具體如下:

一、Atilia可以做什么

Atilia是一個基于命令行的C#程序,可以發送郵件給一個或多個人。Atilia通過QQ的SMTP服務發送郵件,可以發送附件,可以在配置文件中手動配置收信人。

二、運行Atilia需要什么

在Atilia應用程序的同一目錄下,有如下文件

1)一個Attachments文件夾,Atilia會將里面所有的子文件(不含子文件夾及其中文件)視作附件發送給收信人

2)AddressBook.xml文件,用于配置收信人

3)Atilia.html文件,是被發送的郵件文本

這三個文件都位于編譯環境中的根目錄下,在“程序集屬性→生成事件→后期生成事件命令行”中可以將編譯環境中的文件復制到Debug目錄中

xcopy "$(ProjectDir)Atilia.html" "$(TargetDir)" /Yxcopy "$(ProjectDir)AddressBook.xml" "$(TargetDir)" /Yxcopy "$(ProjectDir)Attachments/*" "$(TargetDir)/Attachments/" /Y

三、收信人的配置

收信人配置的規則很簡單,保存在AddressBook.xml中

<?xml version="1.0" encoding="gb2312"?><!--通訊錄--><Root Subject="測試郵件"> <Person Name="江有汜" Email="1239063237@qq.com" /> <Person Name="淫俠" Email="****@qq.com" /></Root>

每一個Person代表了一個人,Name是后面Email的一個標識,Email是收信人的地址

Atilia運行后會將郵件發給通信錄中存在的每一個Person

四、輸入參數

1)沒有輸入參數:當即準備發送所有的郵件,發送前詢問是否發送:要求輸入(y/n)

2)兩個輸入參數:8位的年月日 和 6位的時分秒,如2014年9月30日23時40分00秒,就需要輸入如下命令運行:Atilia 20140930 234000

五、程序代碼

using System;using System.Collections.Generic;using System.Linq;using System.Net.Mail;using System.Text;using System.Threading.Tasks;using System.IO;using System.Net.Mime;using System.Xml;using System.Text.RegularExpressions;namespace Atilia{  class Program  {    static void Main(string[] args)    {      MailMessage mlmssg = new MailMessage();      mlmssg.From = new MailAddress("1254355584@qq.com");      //讀取收信人列表      Console.WriteLine("正在讀取收信人列表");      XmlDocument xdoc = new XmlDocument();      xdoc.Load("AddressBook.xml");      XmlNode xroot = xdoc.SelectSingleNode("Root");      foreach (var xe in xroot.ChildNodes)      {        //判斷讀取到的是XmlElement而不是注釋        if (xe is XmlElement)        {          mlmssg.To.Add((xe as XmlElement).GetAttribute("Email"));          Console.WriteLine("增加收信人 {0} 郵箱地址為 {1}",            (xe as XmlElement).GetAttribute("Name"),            (xe as XmlElement).GetAttribute("Email"));        }      }      Console.WriteLine("正在生成郵件主題,設定編碼格式");      mlmssg.Subject = (xroot as XmlElement).GetAttribute("Subject");      mlmssg.SubjectEncoding = System.Text.Encoding.UTF8;      Console.WriteLine("正在讀取郵件內容(Atilia.html),設定編碼格式");      mlmssg.Body = File.ReadAllText(        "Atilia.html", Encoding.GetEncoding("gb2312"));      mlmssg.BodyEncoding = System.Text.Encoding.UTF8;      mlmssg.IsBodyHtml = true;      Console.WriteLine("設定郵件發送級別:Normal");      mlmssg.Priority = MailPriority.Normal;      //mailMessage.ReplyTo = new MailAddress("1239063237@qq.com"); //已過時      //讀取附件列表      Console.WriteLine("正在讀取附件列表");      if (System.IO.Directory.Exists("Attachments"))      {        System.IO.DirectoryInfo dif = new DirectoryInfo("Attachments");        if (dif.GetFiles().Count() != 0) //只讀取文件,不查看子文件夾        {          System.Net.Mail.Attachment att = null;          //查詢文件夾中的各個文件          foreach (FileInfo f in dif.GetFiles())          {            //分類討論幾種文件類型            switch (f.Extension.ToLower())            {              case ".rar":              case ".zip":                {                  att = new Attachment(f.FullName,                     MediaTypeNames.Application.Zip);                }                 break;              case ".pdf":                {                  att = new Attachment(f.FullName,                    MediaTypeNames.Application.Pdf);                }                break;              case ".rtf":                {                  att = new Attachment(f.FullName,                    MediaTypeNames.Application.Rtf);                }                break;              default: //其他格式不指定格式                {                  att = new Attachment(f.FullName,                    MediaTypeNames.Application.Octet);                }                break;            }            ContentDisposition cd = att.ContentDisposition;            cd.CreationDate = File.GetCreationTime(f.FullName);            cd.ModificationDate = File.GetLastWriteTime(f.FullName);            cd.ReadDate = File.GetLastAccessTime(f.FullName);            Console.WriteLine("成功添加附件 {0}", f.Name);            mlmssg.Attachments.Add(att);          }        }      }      //設定SMTP服務器      Console.WriteLine("準備設置SMTP服務");      SmtpClient smtpclt = new SmtpClient();      smtpclt.DeliveryMethod = SmtpDeliveryMethod.Network;      Console.WriteLine("正在填寫SMTP服務器地址");      smtpclt.Host = "smtp.qq.com";      Console.WriteLine("正在填寫登錄賬戶和登錄密碼");      smtpclt.Credentials =         new System.Net.NetworkCredential("1254355584", "****");      //沒有指定時間      if (args.Length == 0)      {        //發送郵件前的最后提示        while (true)        {          Console.WriteLine("您確實要發送這些郵件嗎? (y/n)");          string result;          result = Console.ReadLine();          result = result.ToLower().Trim();          if (result == "y")          {            break;          }          else if (result == "n")          {            Environment.Exit(0);          }          else          {            Console.WriteLine("輸入錯誤");          }        }      }      else       {        int time_a = 0; //年月日        int time_b = 0; //時分秒        int time_now_a;        int time_now_b;        try        {          //時間分為兩部分          //前一部分是8位數字表示的時間 如:20140930          //后一部分是4位數字表示的時間 如:210755          if (args.Length != 2)          {            throw new Exception("參數不正確");          }          //年月日          if (!Regex.IsMatch(args[0], "^[0-9]{8}$"))          {            throw new Exception("錯誤的時間數據");          }          bool b1 = int.TryParse(args[0], out time_a);          //時分秒          if (!Regex.IsMatch(args[1], "^[0-9]{6}$"))          {            throw new Exception("錯誤的時間數據");          }          bool b2 = int.TryParse(args[1], out time_b);          if ((!b1) || (!b2))          {            throw new Exception("時間數據轉換失敗");          }        }        catch (Exception ex)        {          Console.WriteLine(ex.Message);          Console.WriteLine("命令示例: Atilia 20140930 210755");          //按任意鍵繼續          Console.WriteLine("按任意鍵繼續...");          Console.ReadKey();          Console.WriteLine("/b");          Environment.Exit(0);        }        int counter = 0;        while (true)        {          time_now_a = DateTime.Now.Year * 10000 +             DateTime.Now.Month * 100 + DateTime.Now.Day;          time_now_b = DateTime.Now.Hour * 10000 +            DateTime.Now.Minute * 100 + DateTime.Now.Second;          if (time_now_a < time_a ||             (time_now_a >= time_a && time_now_b < time_b))          {            System.Threading.Thread.Sleep(500);            counter++;            if (counter % 10 == 0)            {              Console.WriteLine("正在等待發信時間 {0} {1}",                time_a, time_b);              counter = 0;            }          }          else          {            break;          }        }      }      //發送郵件      Console.WriteLine("正在發送郵件,請稍候 ...");      smtpclt.Send(mlmssg);      //mail from address must be same as authorization user      //QQ郵箱→設置→賬戶→POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務      //勾選POP3/SMTP服務      Console.WriteLine("郵件發送完畢,正在釋放資源");      smtpclt.Dispose();      mlmssg.Dispose();      Console.WriteLine("按任意鍵繼續...");      Console.ReadKey();      Console.WriteLine("/b");    }  }}

附:慶祝國慶節的Atilia.html內容

<html>  <head>    <title>      國慶快樂!    </title>     <style>       body{text-align:center}     </style>  </head>   <body>    <span style="color:red;font-size:250%;font-weight:800">      江有汜 攜 Atilia 恭祝大家 國慶快樂?。?!    </span>    <hr />      <img src="http://upload.wikimedia.org/wikipedia/commons/c/ce/Chinese_flag_%28Beijing%29_-_IMG_1104.jpg"         alt="中華人民共和國國旗" height="400" width="660"/>    <hr>    <b>十一小長假,可要注意好好休息啊~~~</b><br>    <p>      圖片來源:      <a >        維基共享資源:飄揚在北京的五星紅旗      </a>    </p>    <p>      程序源碼:      <a >        源碼地址      </a>    </p>    刮開涂層贏千萬大獎:    <span style="background-color:black;color:black">      Atilia 很萌的,乃們不要黑她 :P    </span>   </body></html>

發送后的效果展示:

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品成人久久电影| 日韩精品一区二区视频| 亚洲欧美另类中文字幕| 精品调教chinesegay| 日韩中文字幕国产| 69**夜色精品国产69乱| 亚洲一区制服诱惑| 精品国产鲁一鲁一区二区张丽| 亚洲视频综合网| 国产精品jizz在线观看麻豆| 欧美视频在线观看 亚洲欧| 国内精品免费午夜毛片| 亚洲美女自拍视频| 国产日韩精品在线播放| 精品一区二区三区三区| 国产精品偷伦免费视频观看的| 亚洲国产高潮在线观看| 91精品国产高清| 精品久久久国产精品999| 久久中文字幕在线| 亚洲在线观看视频网站| 国产精品免费久久久久久| 日韩中文字幕av| 91po在线观看91精品国产性色| 一本色道久久88综合日韩精品| 久久国内精品一国内精品| 国外成人在线直播| 欧美综合在线观看| 久久综合色影院| 国产精品www色诱视频| 国产精品九九久久久久久久| 久久影视电视剧凤归四时歌| 91久久精品美女高潮| 国模视频一区二区三区| 日韩精品极品在线观看播放免费视频| 中文字幕久久久| 国产精品久久久久久久久粉嫩av| 成人免费观看a| 久久免费视频网站| 4388成人网| 91色中文字幕| 成人福利免费观看| 亚洲bt欧美bt日本bt| 国产精品久久一区主播| 国产精品久久久久秋霞鲁丝| 国产玖玖精品视频| 国产精品老牛影院在线观看| 日本精品中文字幕| 精品久久久av| 久久久久成人精品| 夜夜狂射影院欧美极品| 伊人亚洲福利一区二区三区| 欧美电影免费看| 欧美激情中文字幕乱码免费| 久久免费精品日本久久中文字幕| 欧美另类精品xxxx孕妇| 欧美在线视频播放| 国产亚洲成av人片在线观看桃| 国产国产精品人在线视| 丝袜一区二区三区| 一本色道久久88综合日韩精品| 欧美在线观看日本一区| 国产成人免费91av在线| 色偷偷噜噜噜亚洲男人| 亚洲成人中文字幕| 97视频色精品| 欧美一级淫片videoshd| 亚洲精品久久久久久久久久久| 国产成人在线亚洲欧美| 欧美亚洲激情视频| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品国语对白| 日韩高清中文字幕| 亚洲奶大毛多的老太婆| 欧美最顶级丰满的aⅴ艳星| 久久综合伊人77777尤物| 日韩av毛片网| 琪琪第一精品导航| 久久99久国产精品黄毛片入口| 欧美日韩在线视频观看| 亚洲欧美中文在线视频| 国产一区二区精品丝袜| 欧美另类精品xxxx孕妇| 欧美国产一区二区三区| 成人黄色av网| 色综合久久88色综合天天看泰| 亚洲视频自拍偷拍| 97精品欧美一区二区三区| 高清欧美性猛交xxxx| 国产日韩欧美夫妻视频在线观看| 国产精品自产拍高潮在线观看| 亚洲天堂网站在线观看视频| 亚洲欧美日韩久久久久久| 日韩最新免费不卡| 黄色成人在线免费| 欧美中文字幕视频| 欧美激情一级二级| 亚洲免费电影在线观看| 久久视频免费观看| 在线免费看av不卡| 日韩精品视频中文在线观看| 国产精品高潮呻吟久久av无限| 成人444kkkk在线观看| 国产精品极品美女在线观看免费| 韩日欧美一区二区| 狠狠爱在线视频一区| 欧美精品性视频| 欧美中文字幕视频| 久久精品久久精品亚洲人| 国产国产精品人在线视| 在线不卡国产精品| 久久精品国产69国产精品亚洲| 日韩av在线播放资源| 日韩中文字幕免费看| 亚洲精品综合精品自拍| 国产欧美一区二区白浆黑人| 午夜欧美大片免费观看| 狠狠躁夜夜躁人人爽超碰91| 亚洲自拍中文字幕| 欧美一级免费看| 亚洲欧美日韩精品| 久久久国产一区二区三区| 久久精品99久久久久久久久| 色婷婷av一区二区三区在线观看| 国产亚洲精品91在线| 美女999久久久精品视频| 日本高清久久天堂| 国模视频一区二区三区| 日韩av免费在线观看| 久久伊人91精品综合网站| 中文字幕免费精品一区| 性欧美暴力猛交69hd| 91九色国产视频| 午夜精品久久久久久久男人的天堂| 久久精品在线视频| 国产精品久久久久久久电影| 在线观看国产精品淫| 在线精品国产欧美| 亚洲天堂网在线观看| 国产激情999| 日韩欧美一区二区三区| 精品一区电影国产| 九九热最新视频//这里只有精品| 亚洲天堂av图片| 欧美怡春院一区二区三区| 国产精品www| 最新69国产成人精品视频免费| 97在线看福利| 欧美在线影院在线视频| 亚洲欧美日韩精品久久奇米色影视| 国产精品日韩在线播放| 欧美黑人一区二区三区| 蜜臀久久99精品久久久久久宅男| 精品亚洲精品福利线在观看| 欧美精品福利在线| 91亚洲永久免费精品| 日韩av免费在线播放| 中文字幕在线观看日韩| 日韩精品免费在线视频观看| 18一19gay欧美视频网站| 久久不射热爱视频精品| 国产精品入口日韩视频大尺度| 懂色aⅴ精品一区二区三区蜜月| 高清欧美一区二区三区|