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);
        }
Esempio n. 2
0
        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));
        }