IMAP收邮件
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using LumiSoft.Net.IMAP; 10 using LumiSoft.Net.IMAP.Client; 11 using System.IO; 12 using LumiSoft.Net.Mail; 13 using System.Net.Mime; 14 using System.Net.Mail; 15 using LumiSoft.Net.MIME; 16 namespace EMailTest 17 { 18 public partial class Form1 : Form 19 { 20 public Form1() 21 { 22 InitializeComponent(); 23 } 24 25 private void Handle(object sender, LumiSoft.Net.EventArgs<IMAP_r_u> e) 26 { 27 Console.WriteLine(e.Value.ToString()); 28 } 29 private void button1_Click(object sender, EventArgs oe) 30 { 31 IMAP_Client client = new IMAP_Client(); 32 33 try 34 { 35 //连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号 36 //SSL 993 Other 143 37 //client.Connect("imap.qq.com", 993, true); 38 //client.Login("4587405@qq.com", "*******"); 39 40 client.Connect("imap.163.com", 143, false); 41 client.Login("ylx-1982@163.com", "*****"); 42 client.GetFolders(null).ToList().ForEach(f => { 43 44 Console.WriteLine(f.FolderName); 45 var s = client.FolderStatus(f.FolderName); 46 s.ToList().ForEach(sIt => { 47 Console.WriteLine("总数:{0},未读:{1},最近{2}", sIt.MessagesCount, sIt.MessagesCount, sIt.UnseenCount); 48 }); 49 50 }); 51 52 53 54 client.SelectFolder("INBOX"); 55 56 var seqSet = IMAP_t_SeqSet.Parse("1000:*"); 57 var items = new IMAP_t_Fetch_i[] 58 { 59 new IMAP_t_Fetch_i_Envelope(), 60 new IMAP_t_Fetch_i_Uid(), 61 new IMAP_t_Fetch_i_Flags(), 62 new IMAP_t_Fetch_i_InternalDate(), 63 new IMAP_t_Fetch_i_Rfc822() 64 }; 65 66 67 //Fetch 第一个参数false时seqSet有效 68 client.Fetch(false, seqSet, items, (s, e) => 69 { 70 try 71 { 72 73 var email = e.Value as IMAP_r_u_Fetch; 74 //using (var ctx = new DBTEntities()) 75 //{ 76 // var ent = new T_EMail(); 77 // ent.Flags = email.Flags.Flags.ToString(); 78 // ent.ReceiveDate = email.InternalDate.Date; 79 // ent.Subject = email.Envelope.Subject; 80 // ent.UId = email.UID.UID; 81 // ctx.T_EMail.AddObject(ent); 82 // ctx.SaveChanges(); 83 84 //} 85 Console.WriteLine(" "); 86 Console.WriteLine("标题:" + email.UID.UID +"," + email.InternalDate.Date +"," + email.Envelope.Subject ); 87 Console.WriteLine("------------内容------------------------"); 88 89 if (email.Rfc822 != null) 90 { 91 email.Rfc822.Stream.Position = 0; 92 var mine = Mail_Message.ParseFromStream(email.Rfc822.Stream); 93 email.Rfc822.Stream.Close(); 94 95 //Console.WriteLine(mine.BodyHtmlText); 96 //Console.WriteLine(mine.Body.MediaType); 97 if (mine.Attachments.Count() > 0) 98 { 99 100 var list= mine.Attachments.ToList(); 101 foreach (var att in list) 102 { 103 var part = att.Body as MIME_b_SinglepartBase; 104 105 string filename=@"C:\xx\" + att.ContentType.Param_Name; 106 File.WriteAllBytes(filename, part.Data); 107 108 109 } 110 111 } 112 } 113 } 114 catch (Exception ex) 115 { 116 Console.WriteLine("Handle-Err:" + ex.Message); 117 } 118 119 }); 120 121 122 123 } 124 catch (Exception ex) 125 { 126 Console.WriteLine(ex.Message); 127 } 128 finally 129 { 130 131 } 132 133 134 135 } 136 } 137 }
1 private void button2_Click(object sender, EventArgs e) 2 { 3 var list = new List<EmailAccount>(); 4 //list.Add(new EmailAccount() { Username = "doomguards@126.com", Password = "8888", SmtpHost = "smtp.126.com", SmtpPort = 25 }); 5 //list.Add(new EmailAccount() { Username = "ylx-1982@163.com", Password = "****", SmtpHost = "smtp.163.com", SmtpPort = 25 }); 6 list.Add(new EmailAccount() { Username = "wdfrog@hotmail.com", Password = "8888", SmtpHost = "smtp-mail.outlook.com", SmtpPort = 587,EnableSsl=true });//587, 7 //list.Add(new EmailAccount() { Username = "4587405@qq.com", Password = "***", SmtpHost = "smtp.qq.com", SmtpPort = 25 });// 8 foreach (var account in list) 9 { 10 TestMail(account); 11 Console.WriteLine("完成:" + account); 12 } 13 Console.WriteLine("完成!"); 14 } 15 private void TestMail(EmailAccount account) 16 { 17 string _to = "4587405@qq.com"; 18 string _from = account.Username; 19 string _subject = "Using the new SMTP client.邮箱SMTP测试"; 20 string _body = @"//设置邮箱端口,pop3端口:110, smtp端口是:25 Using this new feature, you can send an e-mail message from an application very easily."; 21 MailMessage message = new MailMessage(); 22 message.From = new MailAddress(_from); 23 //可以利用MailMessage.To.Add方法增加要发送的邮件地址 24 message.To.Add(new MailAddress("1228953303@qq.com")); 25 message.To.Add(new MailAddress(_to)); 26 message.Subject = _subject; 27 message.Body = _body; 28 29 30 #region 添加附件 31 Attachment a = new Attachment(@"d:/x.jpg"); 32 message.Attachments.Add(a); 33 // message.Attachments.Add(new Attachment(@"C:\Documents and Settings\Administrator\桌面\蓝牙串口—线缆噩梦终结者.docx")); 34 #endregion 35 //设置邮箱的地址或IP 36 using (SmtpClient client = new SmtpClient(account.SmtpHost, account.SmtpPort)) 37 { 38 39 //设置邮箱端口,pop3端口:110, smtp端口是:25 40 client.EnableSsl = account.EnableSsl; 41 //设置超时时间 42 client.Timeout = 0; 43 client.DeliveryMethod = SmtpDeliveryMethod.Network; 44 45 //要输入邮箱用户名与密码 46 // client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted); 47 client.Credentials = new NetworkCredential(account.Username, account.Password); 48 client.Send(message); 49 client.Dispose(); 50 51 } 52 53 } 54 55 void client_SendCompleted(object sender, AsyncCompletedEventArgs e) 56 { 57 if (e.Error != null) 58 { 59 Console.WriteLine(e.Error); 60 } 61 } 62 public class EmailAccount 63 { 64 public string Username { get; set; } 65 public string Password { get; set; } 66 public string SmtpHost { get; set; } 67 public int SmtpPort { get; set; } 68 public bool EnableSsl { get; set; } 69 public EmailAccount() 70 { 71 EnableSsl = false; 72 SmtpPort = 25; 73 } 74 public override string ToString() 75 { 76 return Username; 77 } 78 79 }