首页 技术 正文
技术 2022年11月14日
0 收藏 344 点赞 2,860 浏览 1328 个字

程式的主流程為: 開啟SSL連線,逐一讀取收信匣中的信件,將信件內文HTML及附檔逐一存檔後,再將信件移至垃圾桶。

程式碼如下,補充說明我寫在註解裡,請參考:

        static void Main(string[] args)        {            Imap4Client clnt = new Imap4Client();            //使用ConnectSsl進行加密連線            var hmm = clnt.ConnectSsl("imap.gmail.com", );            //登入            clnt.Login("blahblah@gmail.com", "blahblah");            //取得收件匣            Mailbox inbox = clnt.SelectMailbox("inbox");            //因讀完信就會移至垃圾桶,故由後讀到前,以免序號變動            for (int n = inbox.MessageCount; n > ; n--)            {                //取回第n封信                ActiveUp.Net.Mail.Message m = inbox.Fetch.MessageObject(n);                //為每封郵件建立專屬資料夾(要換掉主旨不能當資料夾名稱的字元)                string msgFolder = string.Format("{0:yyyyMMddHHmmsss}-{1}",                     m.ReceivedDate, ReplaceInvalidPathChars(m.Subject));                if (!Directory.Exists(msgFolder))                    Directory.CreateDirectory(msgFolder);                //將信件內文(HTML)寫入MailBody檔案                string f = Path.Combine(msgFolder, "MailBody.html");                File.WriteAllText(f, m.BodyHtml.Text);                //逐一寫入附件檔案                foreach (MimePart att in m.Attachments)                {                    f = Path.Combine(msgFolder,                        //換掉不能當檔案名的字元                        ReplaceInvalidFileNameChars(att.Filename));                    File.WriteAllBytes(f, att.BinaryContent);                }                //將信件移至垃圾桶(CopyMessage即可產生移動資料夾的效果)                inbox.CopyMessage(n, "[Gmail]/Trash");                Console.WriteLine("{0}.{1}", n, m.Subject);            }            Console.Read();        }        //將不可做為路徑名稱的字元換成_        static string ReplaceInvalidPathChars(string raw)        {            foreach (char c in Path.GetInvalidPathChars())                raw = raw.Replace(c, '_');            return raw;        }        //將不可做為檔案名稱的字元換成_        static string ReplaceInvalidFileNameChars(string raw)        {            foreach (char c in Path.GetInvalidFileNameChars())                raw = raw.Replace(c, '_');            return raw;        }
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,023
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,361
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,143
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,774
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,853