IMAP: Fix fetch responses (closes #2940) (credits to @markstos)

This commit is contained in:
Maurus Decimus
2026-04-23 18:02:30 +02:00
parent a82948318a
commit 5e87009ca1
23 changed files with 1065 additions and 124 deletions

View File

@@ -1077,12 +1077,12 @@ impl AsImapDataItem for ArchivedMessageMetadata {
let part_offset = u32::from(part.offset_header) as usize;
Ok(match &part.body {
ArchivedMetadataPartType::Text | ArchivedMetadataPartType::Html => {
BodyContents::Text(String::from_utf8_lossy(get_partial_bytes(
BodyContents::Bytes(get_cow_partial_bytes(
decoded
.binary_part(message_id, part_offset)
.transfer_decoded_contents(message_id, part)
.unwrap_or_default(),
partial,
)))
))
.into()
}
ArchivedMetadataPartType::Binary | ArchivedMetadataPartType::InlineBinary => {
@@ -1152,10 +1152,11 @@ impl AsImapDataItem for ArchivedMessageMetadata {
}
match &part.body {
ArchivedMetadataPartType::Text
| ArchivedMetadataPartType::Html
| ArchivedMetadataPartType::Binary
| ArchivedMetadataPartType::InlineBinary => decoded
ArchivedMetadataPartType::Text | ArchivedMetadataPartType::Html => decoded
.transfer_decoded_contents(message_id, part)
.map(|p| p.len())
.unwrap_or_default(),
ArchivedMetadataPartType::Binary | ArchivedMetadataPartType::InlineBinary => decoded
.part(message_id, u32::from(part.offset_header) as usize)
.map(|p| p.len())
.unwrap_or_default(),