private StandardEmailMessageCM GetEmail(GmailService service, string Id, string externalAccountId) { var result = new StandardEmailMessageCM(); var get_request = service.Users.Messages.Get(externalAccountId, Id); get_request.RequestParameters["format"] = new Parameter() { Name = "format", DefaultValue = "full", ParameterType = "query" }; var message_details = get_request.Execute(); string from = message_details.Payload.Headers.Where(a => a.Name == "From").FirstOrDefault().Value; string subject = message_details.Payload.Headers.Where(a => a.Name == "Subject").FirstOrDefault().Value; var email = Regex.Match(from, "<.*>").Value.Trim(); string name; if (email != "") { name = from.Replace(email, "").Trim(); } else { name = email; } email = email.Trim(new char[] { '<', '>' }).Trim(); result.DateReceived = message_details.Payload.Headers.Where(a => a.Name.Contains("Date")).FirstOrDefault().Value; result.EmailFrom = email; result.Subject = subject; result.EmailFromName = name; result.MessageID = message_details.HistoryId.ToString(); string htmlText = ""; if (message_details.Payload.Parts != null) { htmlText = GetMimeString(message_details.Payload.Parts.Where(a => a.MimeType == "text/html" || a.MimeType == "text/plain").FirstOrDefault()); } else { htmlText = Encoding.UTF8.GetString(Convert.FromBase64String(message_details.Payload.Body.Data.Replace('-', '+').Replace('_', '/'))); } result.HtmlText = htmlText; result.PlainText = GetPlainTextFromHtml(result.HtmlText); return(result); }
public override Task Run() { StandardEmailMessageCM mail = null; var eventCrate = Payload.CratesOfType <EventReportCM>().FirstOrDefault()?.Get <EventReportCM>()?.EventPayload; if (eventCrate != null) { mail = eventCrate.CrateContentsOfType <StandardEmailMessageCM>().SingleOrDefault(); } if (mail == null) { RequestPlanExecutionTermination("Letter was not found in the payload."); } Payload.Add(Crate.FromContent(RuntimeCrateLabel, mail)); Success(); return(Task.FromResult(0)); }