public ActionResult Index(int currentPageNumber, int nextPageNumber) { int startSerialNumber = ((nextPageNumber - 1) * 30) + 1; int endSerialNumber = ((nextPageNumber) * 30); List<Email> emails = new List<Email>(); try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); if (inbox.Count > 0) { int pageEndIndex = Math.Max(inbox.Count - startSerialNumber, 0); int pageStartIndex = Math.Max(inbox.Count - endSerialNumber, 0); var messages = inbox.Fetch(pageStartIndex, pageEndIndex, MessageSummaryItems.Envelope); messages = messages.OrderByDescending(message => message.Envelope.Date.Value.DateTime).ToList(); foreach (var message in messages) { if (startSerialNumber <= endSerialNumber) { Email tempEmail = new Email() { SerialNo = startSerialNumber, Uid = message.UniqueId, FromDisplayName = message.Envelope.From.First().Name, FromEmail = message.Envelope.From.First().ToString(), To = message.Envelope.To.ToString(), Subject = message.NormalizedSubject, TimeReceived = message.Envelope.Date.Value.DateTime, HasAttachment = message.Attachments.Count() > 0 ? true : false }; emails.Add(tempEmail); startSerialNumber++; } } } } ViewBag.EmailId = userGmailConfig.GmailUsername; ViewBag.NoOfEmails = endSerialNumber; if (currentPageNumber > nextPageNumber) { ViewBag.PageNumber = currentPageNumber - 1; } else { ViewBag.PageNumber = currentPageNumber + 1; } } catch (Exception ex) { ViewBag.ErrorMessage = "There was an error in processing your request. Exception: " + ex.Message; } return View(emails); }
private GmailConfig FetchUserGmailProfile() { if (Session["userGmailConfig"] == null) { var query = (from c in dataContext.GmailConfigs where (c.Username.ToLower() == User.Identity.Name.ToLower()) select c); if (query.Count() == 1) { userGmailConfig = query.FirstOrDefault(); userGmailConfig.GmailPassword = Decrypt(userGmailConfig.GmailPassword, true); Session["userGmailConfig"] = userGmailConfig; } else { ViewBag.Message = "You have not configured your Gmail credentials, please configure the same before proceeding."; Redirect("/Account/ManageGmailProfile"); } } else { userGmailConfig = (Models.GmailConfig)Session["userGmailConfig"]; } return(userGmailConfig); }
public ActionResult ManageGmailProfile(Models.GmailConfig userInfo) { if (Request.IsAuthenticated && User.Identity.Name != "" && ModelState.IsValid) { userInfo.Username = User.Identity.Name; userInfo.GmailPassword = Encrypt(userInfo.GmailPassword, true); var existingUser = from c in dataContext.GmailConfigs where (c.Username.ToLower() == userInfo.Username.ToLower()) select c; if (existingUser.Count() != 0) { Models.GmailConfig existingConfig = existingUser.FirstOrDefault(); existingConfig.GmailUsername = userInfo.GmailUsername; existingConfig.GmailPassword = userInfo.GmailPassword; existingConfig.IncomingServerAddress = userInfo.IncomingServerAddress; existingConfig.IncomingServerPort = userInfo.IncomingServerPort; existingConfig.OutgoingServerAddress = userInfo.OutgoingServerAddress; existingConfig.OutgoingServerPort = userInfo.OutgoingServerPort; existingConfig.UseSSL = userInfo.UseSSL; dataContext.SubmitChanges(); } else { dataContext.GmailConfigs.InsertOnSubmit(userInfo); dataContext.SubmitChanges(); } } else { ViewBag.Message = "Please login to continue!"; } return(View()); }
public ActionResult Index() { long noOfEmails = 1; UniqueId lastUid = new UniqueId(); List <Email> emails = new List <Email>(); try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); if (inbox.Count > 0) { int index = Math.Max(inbox.Count - 30, 0); var uids = (from c in inbox.Fetch(index, -1, MessageSummaryItems.UniqueId) select c.UniqueId).ToList(); var messages = inbox.Fetch(uids, MessageSummaryItems.Envelope); messages = messages.OrderByDescending(message => message.Envelope.Date.Value.DateTime).ToList(); foreach (var message in messages) { Email tempEmail = new Email() { SerialNo = noOfEmails, Uid = message.UniqueId, FromDisplayName = message.Envelope.From.First().Name, FromEmail = message.Envelope.From.First().ToString(), To = message.Envelope.To.ToString(), Subject = message.NormalizedSubject, TimeReceived = message.Envelope.Date.Value.DateTime, HasAttachment = message.Attachments.Count() > 0 ? true : false }; lastUid = tempEmail.Uid; emails.Add(tempEmail); noOfEmails++; } } } ViewBag.EmailId = userGmailConfig.GmailUsername; } catch (Exception ex) { ViewBag.ErrorMessage = "There was an error in processing your request. Exception: " + ex.Message; } ViewBag.NoOfEmails = 30; ViewBag.PageNumber = 1; return(View(emails)); }
public JsonResult Delete(string csEmailUids) { JsonResult jsonResult = new JsonResult(); var outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadWrite); var uids = new List <UniqueId>(); if (csEmailUids.Contains(',')) { foreach (var item in csEmailUids.Split(',')) { uids.Add(new UniqueId(Convert.ToUInt32(item))); } } else { uids.Add(new UniqueId(Convert.ToUInt32(csEmailUids))); } client.Inbox.AddFlags(uids, MessageFlags.Deleted, true); if (client.Capabilities.HasFlag(ImapCapabilities.UidPlus)) { client.Inbox.Expunge(uids); } else { client.Inbox.Expunge(); } outputMessage = "Email(s) deleted successfully!"; } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } jsonResult.Data = new { message = outputMessage, }; return(jsonResult); }
public ActionResult ManageGmailProfile() { var query = (from c in dataContext.GmailConfigs where (c.Username.ToLower() == User.Identity.Name.ToLower()) select c); Models.GmailConfig existingUser = new Models.GmailConfig(); if (query.Count() == 1) { existingUser = query.FirstOrDefault(); existingUser.GmailPassword = ""; } return(View(existingUser)); }
public JsonResult Read(uint emailUid) { JsonResult email = new JsonResult(); var outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); MimeMessage message = inbox.GetMessage(new UniqueId(emailUid)); email.Data = new { FromDisplayName = message.From.FirstOrDefault().Name, FromEmail = message.From.FirstOrDefault().ToString(), To = message.To.FirstOrDefault().ToString(), Subject = message.Subject, Body = message.HtmlBody, message = "Email fetched successfully" }; } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } email.Data = new { message = outputMessage, }; return(email); }
private GmailConfig FetchUserGmailProfile() { if (Session["userGmailConfig"] == null) { var query = (from c in dataContext.GmailConfigs where (c.Username.ToLower() == User.Identity.Name.ToLower()) select c); if (query.Count() == 1) { userGmailConfig = query.FirstOrDefault(); userGmailConfig.GmailPassword = Decrypt(userGmailConfig.GmailPassword, true); Session["userGmailConfig"] = userGmailConfig; } else { ViewBag.Message = "You have not configured your Gmail credentials, please configure the same before proceeding."; Redirect("/Account/ManageGmailProfile"); } } else { userGmailConfig = (Models.GmailConfig)Session["userGmailConfig"]; } return userGmailConfig; }
public JsonResult Compose(Email email) { JsonResult jsonResult = new JsonResult(); string outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); var message = new MimeMessage(); message.From.Add(new MailboxAddress(email.FromEmail, email.FromEmail)); if (email.ToAsCsv.Contains(',')) { foreach (var item in email.ToAsCsv.Split(',')) { message.To.Add(new MailboxAddress(item, item)); } } else if (email.ToAsCsv.Contains(';')) { foreach (var item in email.ToAsCsv.Split(';')) { message.To.Add(new MailboxAddress(item, item)); } } else { message.To.Add(new MailboxAddress(email.ToAsCsv, email.ToAsCsv)); } message.Subject = email.Subject; message.Body = new TextPart("plain") { Text = email.Body }; using (var client = new SmtpClient()) { try { client.Connect(userGmailConfig.OutgoingServerAddress, userGmailConfig.OutgoingServerPort); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); client.Send(message); client.Disconnect(true); outputMessage = "Your message was sent successfully"; } catch (Exception) { outputMessage = "There was an error sending your mail."; } } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } jsonResult.Data = new { message = outputMessage, }; return jsonResult; }
public JsonResult Read(uint emailUid) { JsonResult email = new JsonResult(); var outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); MimeMessage message = inbox.GetMessage(new UniqueId(emailUid)); email.Data = new { FromDisplayName = message.From.FirstOrDefault().Name, FromEmail = message.From.FirstOrDefault().ToString(), To = message.To.FirstOrDefault().ToString(), Subject = message.Subject, Body = message.HtmlBody, message = "Email fetched successfully" }; } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } email.Data = new { message = outputMessage, }; return email; }
public ActionResult Index() { long noOfEmails = 1; UniqueId lastUid = new UniqueId(); List<Email> emails = new List<Email>(); try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); if (inbox.Count > 0) { int index = Math.Max(inbox.Count - 30, 0); var uids = (from c in inbox.Fetch(index, -1, MessageSummaryItems.UniqueId) select c.UniqueId).ToList(); var messages = inbox.Fetch(uids, MessageSummaryItems.Envelope); messages = messages.OrderByDescending(message => message.Envelope.Date.Value.DateTime).ToList(); foreach (var message in messages) { Email tempEmail = new Email() { SerialNo = noOfEmails, Uid = message.UniqueId, FromDisplayName = message.Envelope.From.First().Name, FromEmail = message.Envelope.From.First().ToString(), To = message.Envelope.To.ToString(), Subject = message.NormalizedSubject, TimeReceived = message.Envelope.Date.Value.DateTime, HasAttachment = message.Attachments.Count() > 0 ? true : false }; lastUid = tempEmail.Uid; emails.Add(tempEmail); noOfEmails++; } } } ViewBag.EmailId = userGmailConfig.GmailUsername; } catch (Exception ex) { ViewBag.ErrorMessage = "There was an error in processing your request. Exception: " + ex.Message; } ViewBag.NoOfEmails = 30; ViewBag.PageNumber = 1; return View(emails); }
public JsonResult Delete(string csEmailUids) { JsonResult jsonResult = new JsonResult(); var outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadWrite); var uids = new List<UniqueId>(); if (csEmailUids.Contains(',')) { foreach (var item in csEmailUids.Split(',')) { uids.Add(new UniqueId(Convert.ToUInt32(item))); } } else { uids.Add(new UniqueId(Convert.ToUInt32(csEmailUids))); } client.Inbox.AddFlags(uids, MessageFlags.Deleted, true); if (client.Capabilities.HasFlag(ImapCapabilities.UidPlus)) { client.Inbox.Expunge(uids); } else { client.Inbox.Expunge(); } outputMessage = "Email(s) deleted successfully!"; } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } jsonResult.Data = new { message = outputMessage, }; return jsonResult; }
public ActionResult ManageGmailProfile() { var query = (from c in dataContext.GmailConfigs where (c.Username.ToLower() == User.Identity.Name.ToLower()) select c); Models.GmailConfig existingUser = new Models.GmailConfig(); if (query.Count() == 1) { existingUser = query.FirstOrDefault(); existingUser.GmailPassword = ""; } return View(existingUser); }
public ActionResult Index(int currentPageNumber, int nextPageNumber) { int startSerialNumber = ((nextPageNumber - 1) * 30) + 1; int endSerialNumber = ((nextPageNumber) * 30); List <Email> emails = new List <Email>(); try { userGmailConfig = FetchUserGmailProfile(); using (ImapClient client = new ImapClient()) { client.Connect(userGmailConfig.IncomingServerAddress, userGmailConfig.IncomingServerPort, true); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); if (inbox.Count > 0) { int pageEndIndex = Math.Max(inbox.Count - startSerialNumber, 0); int pageStartIndex = Math.Max(inbox.Count - endSerialNumber, 0); var messages = inbox.Fetch(pageStartIndex, pageEndIndex, MessageSummaryItems.Envelope); messages = messages.OrderByDescending(message => message.Envelope.Date.Value.DateTime).ToList(); foreach (var message in messages) { if (startSerialNumber <= endSerialNumber) { Email tempEmail = new Email() { SerialNo = startSerialNumber, Uid = message.UniqueId, FromDisplayName = message.Envelope.From.First().Name, FromEmail = message.Envelope.From.First().ToString(), To = message.Envelope.To.ToString(), Subject = message.NormalizedSubject, TimeReceived = message.Envelope.Date.Value.DateTime, HasAttachment = message.Attachments.Count() > 0 ? true : false }; emails.Add(tempEmail); startSerialNumber++; } } } } ViewBag.EmailId = userGmailConfig.GmailUsername; ViewBag.NoOfEmails = endSerialNumber; if (currentPageNumber > nextPageNumber) { ViewBag.PageNumber = currentPageNumber - 1; } else { ViewBag.PageNumber = currentPageNumber + 1; } } catch (Exception ex) { ViewBag.ErrorMessage = "There was an error in processing your request. Exception: " + ex.Message; } return(View(emails)); }
public JsonResult Compose(Email email) { JsonResult jsonResult = new JsonResult(); string outputMessage = ""; try { userGmailConfig = FetchUserGmailProfile(); var message = new MimeMessage(); message.From.Add(new MailboxAddress(email.FromEmail, email.FromEmail)); if (email.ToAsCsv.Contains(',')) { foreach (var item in email.ToAsCsv.Split(',')) { message.To.Add(new MailboxAddress(item, item)); } } else if (email.ToAsCsv.Contains(';')) { foreach (var item in email.ToAsCsv.Split(';')) { message.To.Add(new MailboxAddress(item, item)); } } else { message.To.Add(new MailboxAddress(email.ToAsCsv, email.ToAsCsv)); } message.Subject = email.Subject; message.Body = new TextPart("plain") { Text = email.Body }; using (var client = new SmtpClient()) { try { client.Connect(userGmailConfig.OutgoingServerAddress, userGmailConfig.OutgoingServerPort); client.Authenticate(new NetworkCredential(userGmailConfig.GmailUsername, userGmailConfig.GmailPassword)); client.Send(message); client.Disconnect(true); outputMessage = "Your message was sent successfully"; } catch (Exception) { outputMessage = "There was an error sending your mail."; } } } catch (Exception ex) { outputMessage = "There was an error in processing your request. Exception: " + ex.Message; } jsonResult.Data = new { message = outputMessage, }; return(jsonResult); }