Как получить электронную почту HTML, используя GMail API с C # - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу Windows Service, которая должна принимать электронную почту из задач Gmail

enter image description here

Вот мой метод тестирования:

            UserCredential credential;
            UserCredential credentialGmail;

            using (var stream =
                new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
            }
            using (var stream =
                new FileStream("credentialsGmail.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = "tokenGmail.json";
                credentialGmail = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    ScopesGmail,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
            }

            // Create Google Tasks API service.
            var service = new TasksService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
            var service2 = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credentialGmail,
                ApplicationName = ApplicationName,
            });

            // Define parameters of request.
            TasklistsResource.ListRequest listRequest = service.Tasklists.List();
            listRequest.MaxResults = 1000;
            // List task lists.
            IEnumerable<TaskList> taskLists = listRequest.Execute().Items.Where(p => p.Title == "Test");
            if (taskLists != null && taskLists.Count() > 0)
            {
                foreach (var taskList in taskLists)
                {
                    TasksResource.ListRequest tasksListRequest = service.Tasks.List(taskList.Id);
                    var tasks = tasksListRequest.Execute().Items;
                    if (tasks != null)
                    {
                        foreach (var item in tasks)
                        {
                            if ((item.Links != null) 
                                && (item.Links.Count == 1) 
                                && (item.Links[0].Type == "email"))
                            {
                                var uri = item.Links[0].Link.Split('/').Last();
                                var getEmailRequest = service2.Users.Messages.Get("me", uri);
                                var getEmailResponse = getEmailRequest.Execute();
                            }
                        }
                    }
                }
            }

Этопоиск задач, которые добавили адрес электронной почты в список «Тест».После того, как он находит правильное задание, он берет письмо от задания.Для этого я использую Users.Messages.Get .У меня есть почти вся информация по электронной почте в ответ.Но я не смог найти HTML письма и вложения.У меня есть несколько вопросов:

  1. Как я могу получить HTML сообщения от API GMail (у меня есть текст во фрагменте, также я проверил Payload.Headers, но я там не нашел)?
  2. Как мне установить статус задачи на Завершено?
...