static public List <Mime> getEmails() { List <Mime> result = new List <Mime>(); using (POP3_Client pop3 = new POP3_Client()) { try { pop3.Connect("pop3.163.com", 110, false); pop3.Authenticate("*****@*****.**", "6728924", false); //获取邮件信息列表 POP3_ClientMessageCollection infos = pop3.Messages; foreach (POP3_ClientMessage info in infos) { byte[] bytes = info.MessageToByte(); //解析从Pop3服务器发送过来的邮件信息 Mime mime = Mime.Parse(bytes); result.Add(mime); } } catch (Exception ex) { throw new Exception(ex.Message); } } return(result); }
public void SendWithHtmlBody() { var client = TestClient.CreateNaked(session); var user = client.Users[0]; SetUp( new List <TestUser> { user }, null, "Это письмо пользователю", "Это текст письма пользователю", null); var mimeHtml = Mime.Parse(@"..\..\Data\UnparseWithHtml.eml"); mimeHtml.MainEntity.To = _info.Mime.MainEntity.To; mimeHtml.MainEntity.From = _info.Mime.MainEntity.From; _info.Mime = mimeHtml; Process(); var mails = TestMailSendLog.Queryable.Where(l => l.User.Id == user.Id).ToList(); Assert.That(mails.Count, Is.EqualTo(1)); var mailLog = mails[0]; Assert.That(mailLog.Mail.Supplier.Id, Is.EqualTo(_info.Supplier.Id)); Assert.That(mailLog.Mail.Subject, Is.EqualTo("натура сиберика")); Assert.That(mailLog.Mail.Body, Is.StringStarting("\r\nДОБРЫЙ ДЕНЬ!\r\nНаша фирма является поставщиком и официальным представителем органической косметики Натура Сиберика. Мы уже поставляем эту косметику в вашу аптеку по ул.Советская.")); }
public void Check_destination_addresses() { client = TestClient.CreateNaked(session); session.Transaction.Commit(); handler = new WaybillEmailSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); var message = Mime.Parse(@"..\..\Data\EmailSourceHandlerTest\WithCC.eml"); message.MainEntity.To.Clear(); message.MainEntity.Cc.Clear(); var addrTo = new GroupAddress(); addrTo.GroupMembers.Add(new MailboxAddress("*****@*****.**")); message.MainEntity.To.Add(addrTo); var addrCc = new GroupAddress(); addrCc.GroupMembers.Add(new MailboxAddress(String.Format("{0}@waybills.analit.net", client.Addresses[0].Id))); addrCc.GroupMembers.Add(new MailboxAddress("*****@*****.**")); message.MainEntity.Cc.Add(addrCc); handler.CheckMime(message); }
private string ExtractFileFromAttachment(string filename, string archFileName, string externalFileName) { using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) { var logger = LogManager.GetLogger(GetType()); try { var message = Mime.Parse(fs); message = UueHelper.ExtractFromUue(message, Path.GetTempPath()); var attachments = message.GetValidAttachements(); foreach (var entity in attachments) { var attachmentFilename = entity.GetFilename(); if (!FileHelper.CheckMask(attachmentFilename, archFileName) && !FileHelper.CheckMask(attachmentFilename, externalFileName)) { continue; } attachmentFilename = Path.Combine(Path.GetTempPath(), attachmentFilename); entity.DataToFile(attachmentFilename); return(attachmentFilename); } } catch (Exception ex) { logger.ErrorFormat( "Возникла ошибка при попытке перепровести прайс. Не удалось обработать файл {0}. Файл должен быть письмом (*.eml)\n{1}", filename, ex); throw; } } throw new Exception(String.Format("В архиве '{0}' не удалось найти архив '{1}' или файл прайс листа {2}", filename, archFileName, externalFileName)); }
public void Person_contact_from_supplier() { var message = Mime.Parse(@"..\..\Data\MailContextFixture\Unparse_Protek.eml"); var context = new MailContext(); var name = Generator.Name(); var email = name + "@test.ru"; var fromList = new AddressList(); fromList.Add(new MailboxAddress(email)); var supplier = TestSupplier.CreateNaked(session); supplier.Name = name; session.Save(supplier); var group = supplier.ContactGroupOwner.AddContactGroup(ContactGroupType.MiniMails); session.Save(group); group.AddPerson("Tестовая персона"); session.Save(group.Persons[0]); var contact = group.Persons[0].AddContact(ContactType.Email, email); session.Save(contact); FlushAndCommit(); context.ParseMime(message, fromList); Assert.AreEqual(context.Suppliers.Count, 1); Assert.AreEqual(context.Suppliers[0].Name, name); }
private List <Mime> GetEmails(string pop3Server, int pop3Port, bool pop3UseSsl, string username, string password, out List <string> mailMsgIds) { mailMsgIds = new List <string>(); List <Mime> result = new List <Mime>(); List <string> gotEmailIds = new List <string>(); using (POP3_Client pop3 = new POP3_Client()) { pop3.Connect(pop3Server, pop3Port, pop3UseSsl); pop3.Authenticate(username, password, false); POP3_ClientMessageCollection infos = pop3.Messages; int maxRetriveMail = this.GetMaxRetrieveMail(); int messageCount = infos != null ? infos.Count : 0; int totalEmails = messageCount > maxRetriveMail ? maxRetriveMail : messageCount; //foreach (POP3_ClientMessage info in infos) for (int i = totalEmails; i > 0; i--) { var info = infos[i - 1]; if (gotEmailIds.Contains(info.UID)) { continue; } byte[] bytes = info.MessageToByte(); gotEmailIds.Add(info.UID); Mime mime = Mime.Parse(bytes); result.Add(mime); } mailMsgIds.AddRange(gotEmailIds); } return(result); }
public void Parse_x_real_to() { var mime = Mime.Parse(@"..\..\Data\MimeExtentionsFixture\Исходное письмо.eml"); var recipients = mime.GetRecipients(); Assert.That(recipients, Is.EquivalentTo(new[] { "*****@*****.**" })); }
private static IEnumerable <MailAttachment> GetAttachments(IEnumerable <MIME_Entity> attachments) { foreach (var attachment in attachments) { var parsedMime = Mime.Parse(attachment.ToByte(null, null)); yield return(new MailAttachment(attachment.ContentDisposition.Param_FileName, parsedMime.MainEntity.Data)); } }
/// <summary> /// 根据邮件文件制作内存流 /// </summary> /// <param name="_str_eml_file_name_">文件名</param> /// <returns>内存流</returns> public MemoryStream MemoryStreamMime(string _str_eml_file_name_) { MemoryStream mimeStream = null; if (File.Exists(_str_eml_file_name_)) { mimeStream = new MemoryStream(); Mime.Parse(_str_eml_file_name_).ToStream(mimeStream); } return(mimeStream); }
private Mime PatchTo(string file, string to, string from) { var mime = Mime.Parse(file); var main = mime.MainEntity; main.To.Clear(); main.To.Parse(to); main.From.Clear(); main.From.Parse(from); return(mime); }
public void ApplicationTypeTests() { var formats = new[] { "js", "json", "swf", "xap", "zip" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(MediaType.Application, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public void FromAddressParseProblem() { var message = Mime.Parse(@"..\..\Data\MailContextFixture\Unparse_Protek.eml"); var fromList = MimeEntityExtentions.GetAddressList(message); Assert.That(fromList.Count, Is.EqualTo(0), "Список разборанных адресов отправителя должен быть пустым"); var context = new MailContext(); var exception = Assert.Throws<FromParseException>(() => context.ParseMime(message, fromList)); Assert.That(exception.Message, Is.StringStarting("Не смогли разобрать список отправителей письма для сопоставления с поставщиками")); }
public void AudioTypeTests() { var formats = new[] { "aiff", "aif", "aac", "mp3", "m4a", "opus", "ra", "wav", "wma" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(MediaType.Audio, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public void VideoTypeTests() { var formats = new[] { "avi", "f4v", "flv", "m4s", "m4v", "mp4", "mpg", "mpeg", "qt", "webm", "wmv" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(MediaType.Video, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public void TextTypeTests() { // Text var formats = new[] { "css", "csv", "txt", "xml" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(MediaType.Text, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public void ImageTypeTests() { var formats = new[] { "bmp", "gif", "heif", "ico", "jpg", "jpeg", "jxr", "png", "tif", "tiff", "webp" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(MediaType.Image, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public List <Mime> GetEmailsByLumiSoft() { //需要首先设置这些信息 string pop3Server = this.pop3Server; //邮箱服务器 如:"pop.sina.com.cn";或 "pop.tom.com" 好像sina的比较快 int pop3Port = this.pop3Port; //端口号码 用"110"好使。最好看一下你的邮箱服务器用的是什么端口号 bool pop3UseSsl = false; string username = this.username; //你的邮箱用户名 string password = this.password; //你的邮箱密码 List <string> gotEmailIds = new List <string>(); List <Mime> result = new List <Mime>(); using (POP3_Client pop3 = new POP3_Client()) { try { //与Pop3服务器建立连接 pop3.Connect(pop3Server, pop3Port, pop3UseSsl); //验证身份 pop3.Login(username, password); //获取邮件信息列表 POP3_ClientMessageCollection infos = pop3.Messages; foreach (POP3_ClientMessage info in infos) { //每封Email会有一个在Pop3服务器范围内唯一的Id,检查这个Id是否存在就可以知道以前有没有接收过这封邮件 if (gotEmailIds.Contains(info.UID)) { continue; } //获取这封邮件的内容 byte[] bytes = info.MessageToByte(); //记录这封邮件的Id gotEmailIds.Add(info.UID); //解析从Pop3服务器发送过来的邮件信息 Mime mime = Mime.Parse(bytes); //mime.Attachments[0].DataToFile(@"c:\" + mime.Attachments[0].ContentDisposition_FileName); result.Add(mime); } } catch (Exception ex) { throw new Exception(ex.Message); } } return(result); }
public void FontTypeTests() { var formats = new[] { "otf", "ttf", "woff", "woff2" }; foreach (var format in formats) { var mime = Mime.FromFormat(format); Assert.Equal(format, mime.Format); Assert.Equal(MediaType.Font, mime.Type); Assert.Equal(mime, Mime.Parse(mime.Name)); } }
public void MimesToFormatId() { // Audio Assert.Equal(FormatId.Aac, Mime.Parse("audio/aac").ToFormatId()); Assert.Equal(FormatId.Flac, Mime.Parse("audio/flac").ToFormatId()); Assert.Equal(FormatId.Mp3, Mime.Parse("audio/mpeg").ToFormatId()); Assert.Equal(FormatId.Ogg, Mime.Parse("audio/ogg").ToFormatId()); Assert.Equal(FormatId.Opus, Mime.Parse("audio/opus").ToFormatId()); // Images Assert.Equal(FormatId.Png, Mime.Parse("image/png").ToFormatId()); Assert.Equal(FormatId.Tiff, Mime.Parse("image/tiff").ToFormatId()); Assert.Equal(FormatId.Gif, Mime.Parse("image/gif").ToFormatId()); Assert.Equal(FormatId.Heif, Mime.Parse("image/heif").ToFormatId()); Assert.Equal(FormatId.Jpeg, Mime.Parse("image/jpeg").ToFormatId()); Assert.Equal(FormatId.Jxr, Mime.Parse("image/vnd.ms-photo").ToFormatId()); Assert.Equal(FormatId.Png, Mime.Parse("image/png").ToFormatId()); Assert.Equal(FormatId.Svg, Mime.Parse("image/svg+xml").ToFormatId()); Assert.Equal(FormatId.WebP, Mime.Parse("image/webp").ToFormatId()); }
public void MimesFromNames() { // Audio Assert.Equal("aac", Mime.Parse("audio/aac").Format); Assert.Equal("flac", Mime.Parse("audio/flac").Format); Assert.Equal("mp3", Mime.Parse("audio/mpeg").Format); Assert.Equal("oga", Mime.Parse("audio/ogg").Format); Assert.Equal("opus", Mime.Parse("audio/opus").Format); // Images Assert.Equal("avif", Mime.Parse("image/avif").Format); Assert.Equal("png", Mime.Parse("image/png").Format); Assert.Equal("tiff", Mime.Parse("image/tiff").Format); Assert.Equal("gif", Mime.Parse("image/gif").Format); Assert.Equal("heif", Mime.Parse("image/heif").Format); Assert.Equal("jpeg", Mime.Parse("image/jpeg").Format); Assert.Equal("jxr", Mime.Parse("image/vnd.ms-photo").Format); Assert.Equal("png", Mime.Parse("image/png").Format); Assert.Equal("svg", Mime.Parse("image/svg+xml").Format); Assert.Equal("webp", Mime.Parse("image/webp").Format); // Videos Assert.Equal("wmv", Mime.Parse("video/x-ms-wmv").Format); Assert.Equal("mp4", Mime.Parse("video/mp4").Format); Assert.Equal("mov", Mime.Parse("video/quicktime").Format); Assert.Equal("ogv", Mime.Parse("video/ogg").Format); // Application Assert.Equal("js", Mime.Parse("application/javascript").Format); Assert.Equal("json", Mime.Parse("application/json").Format); Assert.Equal("zip", Mime.Parse("application/zip").Format); // Text Assert.Equal("css", Mime.Parse("text/css").Format); // Fonts Assert.Equal("ttf", Mime.Parse("font/ttf").Format); Assert.Equal("woff", Mime.Parse("font/woff").Format); Assert.Equal("woff2", Mime.Parse("font/woff2").Format); }
public void SendWithEmptyBody() { var client = TestClient.CreateNaked(session); var user = client.Users[0]; SetUp( new List <TestUser> { user }, null, "Это письмо пользователю", "Это текст письма пользователю", null); var mimeEmptyBody = Mime.Parse(@"..\..\Data\UnparseWithEmptyBody.eml"); Assert.IsNotNull(mimeEmptyBody.MainEntity.Subject); Assert.IsNotNull(mimeEmptyBody.BodyText); Assert.That(mimeEmptyBody.BodyText, Is.EqualTo(String.Empty)); Assert.IsNull(mimeEmptyBody.BodyHtml); mimeEmptyBody.MainEntity.To = _info.Mime.MainEntity.To; mimeEmptyBody.MainEntity.From = _info.Mime.MainEntity.From; _info.Mime = mimeEmptyBody; Process(); var mails = TestMailSendLog.Queryable.Where(l => l.User.Id == user.Id).ToList(); Assert.That(mails.Count, Is.EqualTo(1)); var mailLog = mails[0]; Assert.That(mailLog.Mail.Supplier.Id, Is.EqualTo(_info.Supplier.Id)); Assert.That(mailLog.Mail.Subject, Is.EqualTo("Отказы по заявке № АХ1-1131222")); Assert.That(mailLog.Mail.Body, Is.Null); Assert.That(mailLog.Mail.Attachments.Count, Is.EqualTo(1)); Assert.That(mailLog.Mail.Attachments[0].FileName, Is.EqualTo("K1795MZАХ1-1131222D120305.xls")); }
public void CheckHtmlToText() { var mime = Mime.Parse(@"..\..\Data\UnparseWithHtml.eml"); Assert.That(mime.BodyText, Is.Null.Or.Empty); Assert.IsNotEmpty(mime.BodyHtml); var convertedText = mime.HtmlToText(); Assert.IsNotEmpty(convertedText); var expectedText = @" ДОБРЫЙ ДЕНЬ! Наша фирма является поставщиком и официальным представителем органической косметики Натура Сиберика. Мы уже поставляем эту косметику в вашу аптеку по ул.Советская. Наш склад находится в г.Белгород. Доставка в г Губкин и Ст.Оскол по средам. На этой неделе машина будет в пятницу в связи с поступлением товара в четверг. Высылаю наши прайсы. и презентацию новинок.Наш прайс лист вы можете найти в ""аналитке"" С уважением, ИП Деденко Виктория Владимировна Белгород 8 960 628 51 32 "; Assert.That(convertedText, Is.EqualTo(expectedText)); }
public static ChannelMessage From(Stream stream, ChannelMessageHeader header) { stream.Seek(0, SeekOrigin.Begin); var mimeMessage = Mime.Parse(stream); var message = new ChannelMessage(); if (header != null) { message.MessageNumber = header.MessageNumber; message.Size = header.Size; message.SourceFolder = header.SourceFolder; message.IsRead = header.IsRead; message.IsStarred = header.IsStarred; message.DateReceived = header.DateReceived; } else { message.SourceFolder = "INBOX"; message.DateReceived = DateTime.Now; } message.Context = mimeMessage.MainEntity.Subject; message.MessageIdentifier = mimeMessage.MainEntity.MessageID; message.InReplyTo = mimeMessage.MainEntity.InReplyTo; message.BodyHtml = mimeMessage.BodyHtml.ToStream(); if (!String.IsNullOrEmpty(mimeMessage.BodyText)) { message.BodyText = mimeMessage.BodyText.ToStream(); } message.From = new SourceAddress(mimeMessage.MainEntity.From.ToAddressListString()); if (mimeMessage.MainEntity.To == null) { var deliveredTo = mimeMessage.MainEntity.Header.GetFirst("Delivered-To:"); if (deliveredTo != null) { message.To = new SourceAddressCollection(deliveredTo.Value); } } else { message.To = new SourceAddressCollection(mimeMessage.MainEntity.To.ToAddressListString()); } if (mimeMessage.MainEntity.Cc != null) { message.CC = new SourceAddressCollection(mimeMessage.MainEntity.Cc.ToAddressListString()); } if (mimeMessage.MainEntity.Bcc != null) { message.BCC = new SourceAddressCollection(mimeMessage.MainEntity.Bcc.ToAddressListString()); } foreach (var att in mimeMessage.Attachments) { var attachment = new ChannelAttachment { Filename = att.ContentDisposition == ContentDisposition_enum.Attachment ? att.ContentDisposition_FileName : att.ContentType_Name }; if (!String.IsNullOrEmpty(att.ContentID)) { attachment.ContentId = att.ContentID.Trim('<', '>'); } attachment.ContentType = String.IsNullOrEmpty(att.ContentID) ? ContentType.Attachment : ContentType.Inline; attachment.ContentStream = new MemoryStream(att.Data); message.Attachments.Add(attachment); } return(message); }
private void Button_Click(object sender, RoutedEventArgs e) { //string muster = File.ReadAllText(@"C:\Users\maxre\Documents\Faust.txt"); StringBuilder musterbuilder = new StringBuilder(); // alle Dateien durchlaufen var files = from file in Directory.EnumerateFiles(@"C:\Users\maxre\Documents\GMailGesendet\Gesendet_20171017-2254\Nachrichten", "*.eml", SearchOption.AllDirectories) //from text in File.ReadAllText(file) select new { File = file, // text = text }; // Email Body parsen und zu einem Ganzen zusammenhängen Random zufall = new Random(); int maxSize = 40000; // max. Länge des Vorgabetexts int anzahlWörter = 5000; List <int> indizes = new List <int>(); while (musterbuilder.Length < maxSize) { var zufallsIndex = zufall.Next(files.Count()); if (!indizes.Contains(zufallsIndex)) { Mime m = Mime.Parse(files.ElementAt(zufallsIndex).File); indizes.Add(zufallsIndex); musterbuilder.Append(m.BodyText); } } string muster = musterbuilder.ToString(); // Wörter aus Text generieren foreach (var item in ".,;:\"\r\n!>") { muster = muster.Replace(item, ' '); } bool regieanweisung = false; bool rundeKlammer = false; bool eckigeKlammer = false; // Text in _Unterstrichen entfernen und meerfache Lehrzeichen loswerden StringBuilder gesäubert = new StringBuilder(); for (int i = 0; i < muster.Length; i++) { if (muster[i] == '_') { regieanweisung = !regieanweisung; } else if (muster[i] == '(') { rundeKlammer = true; } else if (muster[i] == ')') { rundeKlammer = false; } else if (muster[i] == '[') { eckigeKlammer = true; } else if (muster[i] == ']') { eckigeKlammer = false; } else if (!regieanweisung && !eckigeKlammer && !rundeKlammer && !(muster[i] == ' ' && (gesäubert.Length == 0 || gesäubert[gesäubert.Length - 1] == ' '))) { gesäubert.Append(muster[i]); } } string gesäubertString = gesäubert.ToString().ToLower(); string[] wörter = gesäubertString.Split(' '); // Monogramme, Digramme erzeugen... int n = 3; List <NGramm> ngramme = new List <NGramm>(); for (int i = 0; i < wörter.Length - n; i++) { // Nehme die nächsten n Wörter // Gibt es dazu schon ein N-Gramm? NGramm aktuellesNGramm = null; foreach (var item in ngramme) { bool treffer = true; for (int j = 0; j < n; j++) { if (item.Wörter[j] != wörter[i + j]) { treffer = false; } } if (treffer) { aktuellesNGramm = item; break; } } if (aktuellesNGramm != null) // Falls ja: Speichere Folgewort in N-Gramm { aktuellesNGramm.Folgewörter.Add(wörter[i + n]); } else // Falls nein: Erzeuge N-Gramm mit Folgewort { ngramme.Add(new NGramm()); string[] w = new string[n]; for (int k = 0; k < n; k++) { w[k] = wörter[i + k]; } ngramme.Last().Wörter = w; ngramme.Last().Folgewörter.Add(wörter[i + n]); } } // Sortieren nach Häufigkeit IEnumerable <NGramm> sortedListGenerator = from word in ngramme orderby word.Folgewörter.Count() ascending select word; List <NGramm> sortedList = new List <NGramm>(); foreach (NGramm ngramm in sortedListGenerator) { sortedList.Add(ngramm); } List <string> generierteWörter = new List <string>(); NGramm g = ngramme[zufall.Next(sortedList.Count)]; for (int i = 0; i < n; i++) { generierteWörter.Add(g.Wörter[i]); } // Nehme n Wörter irgendwo aus dem Text for (int i = 0; i < anzahlWörter; i++) { NGramm aktuellesNGramm = null; foreach (var item in sortedList) { bool treffer = true; for (int j = 0; j < n; j++) { if (item.Wörter[j] != generierteWörter[generierteWörter.Count - n + j]) { treffer = false; } } if (treffer) { aktuellesNGramm = item; break; } } generierteWörter.Add(aktuellesNGramm.Folgewörter[zufall.Next(aktuellesNGramm.Folgewörter.Count)]); } StringBuilder generierterText = new StringBuilder(); for (int i = 0; i < generierteWörter.Count; i++) { if (i == generierteWörter.Count - 1) { generierterText.Append(generierteWörter[i]); } else { generierterText.Append(generierteWörter[i] + " "); } } string generierterTextString = generierterText.ToString(); }
public void ProcessIMAPFolder() { using (var imapClient = new IMAP_Client()) { _imapClient = imapClient; ConnectToIMAP(); try { var items = Enumerable.Empty <IMAP_FetchItem>().ToArray(); var toDelete = new List <IMAP_FetchItem>(); do { toDelete.Clear(); ImapReader.PingReader(); items = FetchUIDs(); if (log.IsDebugEnabled) { log.DebugFormat("Получено {0} UIDs", items.Length); } //обрабатываем мисьма пачками что бы уменьшить вероятность появления дублей //при остановке шатной или аварийной остановке items = items.Take(100).ToArray(); ImapReader.PingReader(); foreach (var item in items) { if (log.IsDebugEnabled) { log.DebugFormat("Обработка {0} UID", item.UID); } IMAP_FetchItem[] OneItem = null; try { OneItem = FetchMessages(item.UID); Message = Mime.Parse(OneItem[0].MessageData); CurrentUID = item.UID; ImapReader.PingReader(); ImapReader.ProcessMime(Message); toDelete.Add(item); } catch (Exception ex) { if (log.IsDebugEnabled) { log.Debug(String.Format("Не удалось обработать письмо {0} UID", item.UID), ex); } Message = null; var errorInfo = GetErrorInfo(item.UID); if (UIDTimeout(errorInfo)) { ErrorInfos.Remove(errorInfo); toDelete.Add(item); ImapReader.ProcessBrokenMessage(item, OneItem, ex); } } } //Производим удаление писем if (toDelete.Count > 0) { var sequence = new IMAP_SequenceSet(); sequence.Parse(String.Join(",", toDelete.Select(i => i.UID.ToString())), long.MaxValue); imapClient.DeleteMessages(sequence, true); } } while (items.Length > 0 && toDelete.Count > 0); } finally { Message = null; } } }
static void pop3() { List <string> gotemailids = new List <string>(); using (LumiSoft.Net.POP3.Client.POP3_Client pop3 = new POP3_Client()) { try { //与pop3服务器建立连接 pop3.Connect("pop.qq.com", 110, false); //验证身份 pop3.Login("*****@*****.**", "myhaiyan"); //获取邮件信息列表 POP3_ClientMessageCollection infos = pop3.Messages; foreach (POP3_ClientMessage info in infos) { //每封email会有一个在pop3服务器范围内唯一的id,检查这个id是否存在就可以知道以前有没有接收过这封邮件 if (gotemailids.Contains(info.UID)) { continue; } //获取这封邮件的内容 byte[] bytes = info.MessageToByte(); //记录这封邮件的id gotemailids.Add(info.UID); //解析从pop3服务器发送过来的邮件信息 Mime m = Mime.Parse(bytes); if (m != null) { string mailfrom = ""; string mailfromname = ""; if (m.MainEntity.From != null) { for (int i = 0; i < m.MainEntity.From.Mailboxes.Length; i++) { if (i == 0) { mailfrom = (m.MainEntity.From).Mailboxes[i].EmailAddress; } else { mailfrom += string.Format(",{0}", (m.MainEntity.From).Mailboxes[i].EmailAddress); } mailfromname = (m.MainEntity.From).Mailboxes[0].DisplayName != "" ? (m.MainEntity.From).Mailboxes[0].DisplayName : (m.MainEntity.From).Mailboxes[0].LocalPart; } } string mailto = ""; string mailtotocollection = ""; if (m.MainEntity.To != null) { mailtotocollection = m.MainEntity.To.ToAddressListString(); for (int i = 0; i < m.MainEntity.To.Mailboxes.Length; i++) { if (i == 0) { mailto = (m.MainEntity.To).Mailboxes[i].EmailAddress; } else { mailto += string.Format(",{0}", (m.MainEntity.To).Mailboxes[i].EmailAddress); } } } } //获取附件 foreach (MimeEntity entry in m.Attachments) { string filename = entry.ContentDisposition_FileName; //获取文件名称 string path = AppDomain.CurrentDomain.BaseDirectory + @"attch\" + filename; if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + @"attch")) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"attch"); } if (File.Exists(path)) { Random random = new Random(); int newfile = random.Next(1, 100000); path = AppDomain.CurrentDomain.BaseDirectory + @"attch\" + newfile.ToString(); Directory.CreateDirectory(path); path += @"\" + filename; } byte[] data = entry.Data; FileStream pfilestream = null; pfilestream = new FileStream(path, FileMode.Create); pfilestream.Write(data, 0, data.Length); pfilestream.Close(); } } } catch (Exception ex) { } } }