Обновлен вопрос, новая информация, проблема в другом макете сообщения.
Для приложения я использую Gmail API, который успешно извлекает вложения из Gmail API, код, используемый из Google Developers . Но некоторые сообщения отличаются от остальных тем, что не содержат html-сообщения (сообщение также закодировано в base64), а «теги» вложения отличаются:
Это работает, API может найти вложение:
--000000000000ff7fdb05837ee23d--
--000000000000ff7fe105837ee241
Content-Type: application/pdf; name="inv20190275.PDF"
Content-Disposition: attachment; filename="inv20190275.PDF"
Content-Transfer-Encoding: base64
Content-ID: <16957c99f59399ae79b1>
X-Attachment-Id: 16957c99f59399ae79b1
Для этого вложение не может быть найдено (первые строки могут содержать строки перед этими):
----boundary_141_b8719500-62b8-4b0e-9018-36676671a768--
----boundary_140_e2c718ec-c2f4-40e5-a244-18917f7e1c5c--
----boundary_142_795676fe-01cb-4744-ac4f-c90f6a4e8843
Content-Type: multipart/mixed;
boundary="--boundary_143_6415c656-2b4b-4837-9481-ada707bbdb52"
----boundary_143_6415c656-2b4b-4837-9481-ada707bbdb52
Content-Type: application/octet-stream; name="3317608.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
Код, который я использую:
private void SaveAttachment(Message email)
{
Message message = service.Users.Messages.Get(mailadres, email.Id).Execute();
IList<MessagePart> parts = message.Payload.Parts;
foreach (MessagePart part in parts)
{
//For every email I get an empty messagebox (if no attachment found).
MessageBox.Show("attachmentId: " + part.Body.AttachmentId);
if (!string.IsNullOrEmpty(part.Filename))
{
//No attachment found, so no messagebox here.
MessageBox.Show("filename: " + part.Filename);
string attId = part.Body.AttachmentId;
}
}
}
Как я могу заставить свой код повторно распознавать тот факт, что вложение хранится в другой части сообщения? Где, как кажется, он не хранится в Message.Payload.Parts.
Старый вопрос:
Для приложения я использую Gmail API, который успешно извлекает вложения из Gmail API, код, используемый из Google Developers . Но по неизвестной причине API утверждает, что в некоторых случаях в Gmail нет вложений, в которых они видны и открыты. Код гласит:
- Строка AttachmentId пуста ("")
- part.Filename строка также пуста
Мой код:
private void SaveAttachment(Message email)
{
Message message = service.Users.Messages.Get(mailadres, email.Id).Execute();
IList<MessagePart> parts = message.Payload.Parts;
foreach (MessagePart part in parts)
{
//For every email I get an empty messagebox (if no attachment found).
MessageBox.Show("attachmentId: " + part.Body.AttachmentId);
if (!string.IsNullOrEmpty(part.Filename))
{
//No attachment found, so no messagebox here.
MessageBox.Show("filename: " + part.Filename);
string attId = part.Body.AttachmentId;
}
}
}
Письма выглядят как обычные письма. Некоторые отправлены "flowmailer.net", некоторые просто обычными адресами электронной почты.
Я не нашел подобных проблем в сети, и я не знаю, где искать причину проблемы .. Это ошибка или я что-то сделал не так / не полностью?