// GET: Mail public ActionResult Index(string id = null, string mailBox = null, string mailHost = "dragonmail.dragonspears.com") { var model = new MailViewModel(); if (string.IsNullOrEmpty(mailBox)) { return(View(model)); } model.MailBox = mailBox; string queueName = DSMail.MessageQueue(string.Format("{0}@{1}", mailBox, mailHost)); var mailQuery = Client.CreateDocumentQuery <DSMail>(CollectionUri, new FeedOptions { MaxItemCount = -1 }) .Where(m => m.Queue == queueName) .OrderByDescending(m => m.SentDate); model.MailMessages = mailQuery.ToList(); if (string.IsNullOrEmpty(id)) { model.SelectedItem = model.MailMessages.FirstOrDefault(); } else { model.SelectedItem = model.MailMessages.FirstOrDefault(m => m.id == id); } return(View(model)); }
public static ParsedMail MimeMessageToDSMail(this MimeMessage mimeMessage, string messageId) { var parsedMail = new ParsedMail(); parsedMail.Mail = new List <DSMail>(); parsedMail.Attachments = new List <ParsedAttachment>(); //find inline attachments var attachments = new List <MimePart>(); if (mimeMessage.BodyParts != null) { attachments.AddRange(mimeMessage.BodyParts.OfType <MimePart>() .Where(p => !string.IsNullOrEmpty(p.FileName) && (p.ContentDisposition == null || string.IsNullOrEmpty(p.ContentDisposition.Disposition) || p.ContentDisposition.Disposition == ContentDisposition.Inline)) .ToList()); } if (mimeMessage.Attachments != null) { attachments.AddRange(mimeMessage.Attachments.OfType <MimePart>()); foreach (var attachment in mimeMessage.Attachments.OfType <MessagePart>()) { AddAttachment(parsedMail, attachment); } } foreach (var attachment in attachments) { AddAttachment(parsedMail, attachment); } foreach (var toAddress in mimeMessage.To) { var mail = new DSMail(); parsedMail.Mail.Add(mail); if (mimeMessage.From != null && mimeMessage.From.Count > 0) { var firstFrom = mimeMessage.From.First() as MailboxAddress; mail.FromEmail = firstFrom.Address; mail.FromName = firstFrom.Name; } var toMailBox = toAddress as MailboxAddress; mail.ToName = toMailBox.Name; mail.ToEmail = toMailBox.Address; mail.Subject = mimeMessage.Subject; mail.HtmlBody = mimeMessage.HtmlBody; mail.TextBody = mimeMessage.TextBody; mail.Queue = DSMail.MessageQueue(mail.ToEmail); mail.SentDate = DateTime.Now; mail.MessageId = messageId; mail.Attachments = parsedMail.Attachments.ToDictionary(a => a.Name, a => a.File.Length); } return(parsedMail); }
public string GetRawMailText(DSMail source) { var task = GetRawMail(source); task.RunSynchronously(); task.Wait(); byte[] rawMail = task.Result; ASCIIEncoding encoder = new ASCIIEncoding(); string rawText = encoder.GetString(rawMail, 0, rawMail.Length); return(rawText); }
private List <DSMail> GetMail(string mailBox) { string queueName = DSMail.MessageQueue(string.Format("{0}@dragonmail.dragonspears.com", mailBox)); var mail = Client.CreateDocumentQuery <DSMail>(CollectionUri, new FeedOptions { MaxItemCount = -1 }) .Where(m => m.Queue == queueName) .ToList(); return(mail.Where(m => m.MessageStatus == 0) .ToList());//message status 0 is unprocessed }
public async Task <byte[]> GetRawMail(DSMail source) { var docUri = UriFactory.CreateDocumentUri(DTO.Constants.ConnectionSettings.DOCDB_DATABASE_NAME, DTO.Constants.ConnectionSettings.DOCDB_COLLECTION_NAME, source.id); var response = await Client.ReadDocumentAsync(docUri); string attachmentLink = response.Resource.AttachmentsLink; var attachment = Client.CreateAttachmentQuery(attachmentLink) .Where(a => a.Id == source.MessageId) .AsEnumerable() .FirstOrDefault(); if (attachment == null) { throw new ApplicationException("Not Found"); } var mediaResponse = await Client.ReadMediaAsync(attachment.MediaLink); byte[] rawMail = new byte[mediaResponse.ContentLength]; await mediaResponse.Media.ReadAsync(rawMail, 0, (int)mediaResponse.ContentLength); return(rawMail); }