#c# #email #gmail-api
#c# #Адрес электронной почты #gmail-api
Вопрос:
Я использую API Gmail для создания приложения WPF, которое может читать и отправлять электронные письма.
Я могу получить «от», «кому», тему электронной почты и т. Д., Но я не могу получить текст сообщения / содержимое / весь текст в нем.
Я пробовал:
string messageContent = message.Raw;
—> сообщение.Raw всегда равен нулюstring messageContent = message.Payload.Body.Data
—> всегда nullstring 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. Я вижу это, я просто не заметил этого сначала.