DecodeToAsync не заполняет MemoryStream для файла PDFC#

Место общения программистов C#
Ответить
Anonymous
 DecodeToAsync не заполняет MemoryStream для файла PDF

Сообщение Anonymous »

Я использовал этот код для загрузки PDF-файла из вложения. И когда я подключаюсь к Gmail IMAP, он работает отлично. Но когда я пытаюсь подключить другой IMAP-сервер, DecodeToAsync просто не может декодировать его в MemoryStream. В отладке я вижу, что mimePart.Content.Stream имеет значение. В чем может быть причина? Код ниже:

Код: Выделить всё

    public async Task GetFileAsync(string messageId, string fileId, string fileName, string folderId = null)
{
using var client = await ConnectToImapServerAsync();
var currentFolder = await GetFolderAsync(client, folderId);
await currentFolder.OpenAsync(FolderAccess.ReadWrite);
if (!int.TryParse(messageId, out int parsedMessageId))
{
return null;
}
var message = await currentFolder.GetMessageAsync(parsedMessageId);
var mimePart = GetMessageAttachmentFilter(message, fileId, fileName);
if (mimePart is null)
{
return null;
}
using MemoryStream memoryStream = new MemoryStream();
await mimePart.Content.DecodeToAsync(memoryStream);
return new EmailFileInfo { Name = mimePart.FileName, ContentType = mimePart.ContentType.MimeType, Stream = memoryStream };
}

private MimePart GetMessageAttachmentFilter(MimeMessage message, string fileId, string fileName)
{
foreach (var attachment in message.Attachments)
{
var mimePart = (MimePart)attachment;
if (mimePart.ContentId == fileId || mimePart.FileName == fileName)
{
return mimePart;
}
}
foreach (var part in message.BodyParts)
{
var mimePart = (MimePart)part;
if (mimePart.ContentId == fileId || mimePart.FileName == fileName)
{
return mimePart;
}
}
return null;
}
Поэтому я ожидал, что этот код будет работать для каждого соединения IMAP. Но это не так

Подробнее здесь: https://stackoverflow.com/questions/791 ... a-pdf-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»