/// <summary> /// Do the work of the getMailsThread: gets new emails from the popClient /// </summary> /// <param name="obj">MailDatabaseHandler</param> private static void getMailsThread_DoWork(object obj) { MailDatabase db = ((MailDatabaseHandler)obj).db; PopClient popClient = ((MailDatabaseHandler)obj).popClient; List <PopClient.emailStruct> allEmails = popClient.FetchUnseenMessages(); if (allEmails == null) { return; } foreach (PopClient.emailStruct email in allEmails) { db.addEmailToDB(email); } }
/// <summary> /// Get all unseen emails from the server /// </summary> /// <returns>list of new emails</returns> public List<emailStruct> FetchUnseenMessages() { SetConnection(); List<string> uids; try { uids = client.GetMessageUids(); } catch { return null; } List<emailStruct> allEmails = new List<emailStruct>(); for (int i = 0; i < uids.Count; i++) { string currentUidOnServer = uids[i]; if (!seenUids.Contains(currentUidOnServer)) { emailStruct email = new emailStruct(); Message mes = client.GetMessage(i + 1); email.messageID = mes.Headers.MessageId; email.senderName = mes.Headers.From.DisplayName; email.senderEmail = mes.Headers.From.MailAddress.Address; string cc = ""; for (int j = 0; j < mes.Headers.Cc.Count; j++) { if (!String.IsNullOrEmpty(cc)) { cc += ","; } cc += mes.Headers.Cc[j]; } string mailTo = ""; for (int j = 0; j < mes.Headers.To.Count; j++) { if (!String.IsNullOrEmpty(mailTo)) { mailTo += ","; } mailTo += mes.Headers.To[j]; } email.cc = cc; email.mailTo = mailTo; email.subject = mes.Headers.Subject; email.timeStamp = mes.Headers.Date; email.body = mes.FindFirstHtmlVersion().GetBodyAsText(); email.receiver = user.email; email.seen = false; if (String.IsNullOrEmpty(email.messageID)) { MailDatabase db = new MailDatabase(); bool inDatabase = false; foreach (emailStruct spamEmail in db.getEmailByMessageID("NULL")) { if (spamEmail.body == email.body && spamEmail.senderEmail == email.senderEmail && spamEmail.subject == email.subject) { inDatabase = true; break; } } if(inDatabase) { continue; } } allEmails.Add(email); seenUids.Add(currentUidOnServer); } } client.Disconnect(); return allEmails; }
/// <summary> /// Get all unseen emails from the server /// </summary> /// <returns>list of new emails</returns> public List <emailStruct> FetchUnseenMessages() { SetConnection(); List <string> uids; try { uids = client.GetMessageUids(); } catch { return(null); } List <emailStruct> allEmails = new List <emailStruct>(); for (int i = 0; i < uids.Count; i++) { string currentUidOnServer = uids[i]; if (!seenUids.Contains(currentUidOnServer)) { emailStruct email = new emailStruct(); Message mes = client.GetMessage(i + 1); email.messageID = mes.Headers.MessageId; email.senderName = mes.Headers.From.DisplayName; email.senderEmail = mes.Headers.From.MailAddress.Address; string cc = ""; for (int j = 0; j < mes.Headers.Cc.Count; j++) { if (!String.IsNullOrEmpty(cc)) { cc += ","; } cc += mes.Headers.Cc[j]; } string mailTo = ""; for (int j = 0; j < mes.Headers.To.Count; j++) { if (!String.IsNullOrEmpty(mailTo)) { mailTo += ","; } mailTo += mes.Headers.To[j]; } email.cc = cc; email.mailTo = mailTo; email.subject = mes.Headers.Subject; email.timeStamp = mes.Headers.Date; email.body = mes.FindFirstHtmlVersion().GetBodyAsText(); email.receiver = user.email; email.seen = false; if (String.IsNullOrEmpty(email.messageID)) { MailDatabase db = new MailDatabase(); bool inDatabase = false; foreach (emailStruct spamEmail in db.getEmailByMessageID("NULL")) { if (spamEmail.body == email.body && spamEmail.senderEmail == email.senderEmail && spamEmail.subject == email.subject) { inDatabase = true; break; } } if (inDatabase) { continue; } } allEmails.Add(email); seenUids.Add(currentUidOnServer); } } client.Disconnect(); return(allEmails); }