C#LumiSoftを使用Net.dll IMAPを通じてQQメールボックスにログインして未読メールを読み取る

4415 ワード

一、まず、登録する必要があるQQメールボックスのアカウントはIMAP機能をオンにして、メールボックスの設定に入って、IMAP機能をオンにした後に一連のパスワードを取得して、これは次に登録する必要があるパスワードで、必ずオンにしてください;
二、LumiSoftが必要です.Net.dll;
三、LumiSoft.Net.dllの開発環境は.Net 2.0 MicrosoftVisual Studioシリーズツールを使用する場合は、プロジェクト環境の変更に注意してください.Ps:.Net 2.0はlinqをサポートしていません
1、宣言
IMAP_Client client = new IMAP_Client(); 

クライアントオブジェクトのインスタンス化;
2、メールボックスに登録する
                client.Connect("imap.qq.com", 993, true);
                string path = System.Environment.CurrentDirectory + "//user.txt";
                if (!File.Exists(path)) {
                    Console.WriteLine("             。");
                    return;
                }
                string emailAccount;
                string password;
                using (FileStream fs = new FileStream(path, FileMode.Open)) {
                    StreamReader sr = new StreamReader(fs);
                    emailAccount = sr.ReadLine();
                    password = sr.ReadLine();
                }

                Console.WriteLine(emailAccount + password);
                client.Login(emailAccount, password);
                client.SelectFolder("INBOX");
ブロガーが使用するファイルはアカウントとパスワードを読み取るのが便利で、省のコードを変更します.
3、メールパラメータの設定を取得する
                var seqSet = IMAP_t_SeqSet.Parse("1:*");
                seqSet.GetType();
                var items = new IMAP_t_Fetch_i[]
                {
                    new IMAP_t_Fetch_i_Envelope(),
                    new IMAP_t_Fetch_i_Uid(),//    ---       
                    new IMAP_t_Fetch_i_Flags(),//    -----  :/Seen(  \Seen,     ,     )   :   ...
                    new IMAP_t_Fetch_i_InternalDate(),
                    new IMAP_t_Fetch_i_Rfc822()//           ----    
                };
4、Fetch読み取りメール
                //Fetch      false seqSet  
                client.Fetch(false, seqSet, items, (s, ex) =>
                {
                    try
                    {
                        var email = ex.Value as IMAP_r_u_Fetch;

                        if (!email.Flags.Flags.ToString().Equals("\\Seen"))
                        {

                            if (email.Envelope.Subject.Contains("    "))
                            {
                                Console.WriteLine(email.Flags.Flags);
                                Console.WriteLine("  :" + email.UID.UID + ",||" + email.InternalDate.Date + ",||" + email.Envelope.Subject);
                                Console.WriteLine("------------  ------------------------");
                                if (email.Rfc822 != null)
                                {
                                    email.Rfc822.Stream.Position = 0;
                                    var mine = Mail_Message.ParseFromStream(email.Rfc822.Stream);
                                    email.Rfc822.Stream.Close();
                                    if (toolBox.findData(mine.BodyHtmlText))//mine.BodyHtmlText     
                                    {
                                        delMail(email.UID.UID);
                                    }
                                }
                            }
                            else
                            {
                                delMail(email.UID.UID);
                            }
                        }

                    }
                    catch (Exception exx)
                    {
                        Console.WriteLine("Handle-Err:" + exx.Message);
                    }

                });
5、     
   
   
  
            try
            {
                var sequenceSet = new IMAP_SequenceSet();
                sequenceSet.Parse(uid.ToString());
                client.StoreMessageFlags(true, sequenceSet, IMAP_Flags_SetType.Add, IMAP_MessageFlags.Deleted);
                Console.WriteLine("----------------");
                client.Expunge();//    
            }
            catch (Exception x)
            {
                Console.WriteLine(x.ToString());
                Console.WriteLine(x.Message);
            }
over.