Как получить весь текст / тело / содержимое сообщения электронной почты в API Gmail? C#

#c# #email #gmail-api

#c# #Адрес электронной почты #gmail-api

Вопрос:

Я использую API Gmail для создания приложения WPF, которое может читать и отправлять электронные письма.

Я могу получить «от», «кому», тему электронной почты и т. Д., Но я не могу получить текст сообщения / содержимое / весь текст в нем.

Я пробовал:

  • string messageContent = message.Raw; —> сообщение.Raw всегда равен нулю
  • string messageContent = message.Payload.Body.Data —> всегда null
  • string messageContent = message.Payload.Parts[0].Body.Data —> всегда null
  • foreach (переменная часть в сообщении.Полезная нагрузка.Части) { byte[] data = Convert.FromBase64String(part.Body.Data); строка decodedString = Encoding.UTF8.getString(данные); MessageBox.Показать (decodedString); }

—> бросает System.FormatException: „The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.”

Я получаю электронные письма таким образом:

 Google.Apis.Gmail.v1.Data.Message message = await service.Users.Messages.Get("me", ((ListViewItem)(sender)).Tag as string).ExecuteAsync();
            foreach (var header in message.Payload.Headers)
            {
                if (header.Name == "From")
                    from = header.Value;
                else if (header.Name == "To")
                    to = header.Value;
                else if (header.Name == "Subject")
                    subject = header.Value;
            }
 

Тег отправителя (ListViewItem) содержит идентификатор электронной почты, который был загружен ранее. Это часть события щелчка ListViewItem.

Есть ли какой-либо рабочий способ получить содержимое электронного письма с помощью API Gmail?

Комментарии:

1. Если полезная нагрузка, тело и данные равны нулю, как вы Convert.FromBase64String вообще ожидаете работать? Как message извлекается? Содержит ли он фактический ответ? Или это значение по умолчанию, которое не было заменено ответом? Опубликуйте код, который фактически извлекает это сообщение

2. Я прочитал несколько похожих вопросов, и это был один из ответов, поэтому я проверил, работает ли он.

3. Очевидно, что нет. Опубликуйте свой код. Convert.FromBase64String(x) ничего не выдаст, если x пусто. Если part есть message.Payload.Parts[0] , вы на самом деле выполняете Convert.FromBase64String(null)

4. Я вижу это, я просто не заметил этого сначала.