From 55d7aec516fcc8a4c4f29060bbf264db58b0fae4 Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sun, 5 May 2024 19:03:38 -0700 Subject: [PATCH] server: handle multipart/related with a multipart/alternative embedded --- server/src/graphql.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/server/src/graphql.rs b/server/src/graphql.rs index 21cadf2..262a885 100644 --- a/server/src/graphql.rs +++ b/server/src/graphql.rs @@ -514,6 +514,7 @@ fn extract_body(m: &ParsedMail, id: &str) -> Result { TEXT_HTML => return Ok(Body::html(body)), MULTIPART_MIXED => extract_mixed(m, &mut part_addr), MULTIPART_ALTERNATIVE => extract_alternative(m, &mut part_addr), + MULTIPART_RELATED => extract_related(m, &mut part_addr), _ => extract_unhandled(m), }; if let Err(err) = ret { @@ -668,9 +669,9 @@ fn flatten_body_parts(parts: &[Body]) -> Body { Body::html(html) } -fn extract_related(m: &ParsedMail, _part_addr: &mut Vec) -> Result { +fn extract_related(m: &ParsedMail, part_addr: &mut Vec) -> Result { // TODO(wathiede): collect related things and change return type to new Body arm. - let handled_types = vec![TEXT_HTML, TEXT_PLAIN]; + let handled_types = vec![MULTIPART_ALTERNATIVE, TEXT_HTML, TEXT_PLAIN]; let mut unhandled_types: Vec<_> = m .subparts .iter() @@ -680,6 +681,11 @@ fn extract_related(m: &ParsedMail, _part_addr: &mut Vec) -> Result