diff --git a/src/mimeparser/mimeparser_tests.rs b/src/mimeparser/mimeparser_tests.rs index e542c10373..bff60cd2f0 100644 --- a/src/mimeparser/mimeparser_tests.rs +++ b/src/mimeparser/mimeparser_tests.rs @@ -2181,3 +2181,26 @@ async fn test_load_shared_secrets_with_legacy_state() -> Result<()> { Ok(()) } + +/// Tests reception of a message from Apple Mail. +/// +/// The message is a multiplart/mixed message +/// with a text part and multipart/related part. +/// +/// multipart/related part has an HTML and images, +/// but images are not referenced with blob:applewebdata:// +/// instead of cid: URLs. +/// +/// See also related test_many_images and test-data/message/many_images_amazon_via_apple_mail.eml +/// for a similar message, but images properly referenced in HTML. +#[tokio::test(flavor = "multi_thread", worker_threads = 2)] +async fn test_apple_blob() { + let mut tcm = TestContextManager::new(); + let context = &tcm.alice().await; + let raw = include_bytes!("../../test-data/message/apple-blob.eml"); + let mimeparser = MimeMessage::from_bytes(context, &raw[..]) + .await + .unwrap(); + + assert_eq!(mimeparser.parts.len(), 4); +} diff --git a/test-data/message/apple-blob.eml b/test-data/message/apple-blob.eml new file mode 100644 index 0000000000..92fdfb68c2 --- /dev/null +++ b/test-data/message/apple-blob.eml @@ -0,0 +1,112 @@ +Return-Path: +Content-Type: multipart/alternative; boundary=Apple-Mail-23186EA7-751B-466A-B348-44BA06879E29 +Content-Transfer-Encoding: 7bit +From: Bob +Mime-Version: 1.0 (1.0) +Subject: Glitchy app on ipad after recent update +Message-Id: +Date: Sat, 15 Aug 2026 21:02:24 +0100 +To: alice@example.org + + +--Apple-Mail-23186EA7-751B-466A-B348-44BA06879E29 +Content-Type: text/plain; + charset=us-ascii +Content-Transfer-Encoding: quoted-printable + +Hello. See first attached image.=20 + +Foo bar. See images 2,3.=20 + + + +--Apple-Mail-23186EA7-751B-466A-B348-44BA06879E29 +Content-Type: multipart/related; + type="text/html"; + boundary=Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3 +Content-Transfer-Encoding: 7bit + + +--Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3 +Content-Type: text/html; + charset=utf-8 +Content-Transfer-Encoding: quoted-printable + +
Hello. 

See first attached image. 

See images 2,3. 

-- 

<= +img alt=3D"image1.jpeg" src=3D"blob:applewebdata://245de37b-ccc3-4dd2-b75b-e= +d66efe8c6a7/678adee9-cd13-4967-aecf-1a1096a3e7ab" data-unique-identifier=3D"= +">3D"image2.jpeg"
= + +--Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3 +Content-Type: image/jpeg; + name=image0.jpeg; + x-apple-part-url="mf_2AD17D5E-F4E6-4B11-A716-8B20BB3543B4/L0/001" +Content-Disposition: inline; + filename=image0.jpeg +Content-Transfer-Encoding: base64 +Content-Id: + +/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK +CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU +FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAAeAB4DAREA +AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMB +AAIQAxAAAAGqQAAAAAAAf//EABQQAQAAAAAAAAAAAAAAAAAAAED/2gAIAQEAAQUCB//EABQRAQAA +AAAAAAAAAAAAAAAAAED/2gAIAQMBAT8BB//EABQRAQAAAAAAAAAAAAAAAAAAAED/2gAIAQIBAT8B +B//EABQQAQAAAAAAAAAAAAAAAAAAAED/2gAIAQEABj8CB//EABQQAQAAAAAAAAAAAAAAAAAAAED/ +2gAIAQEAAT8hB//aAAwDAQACAAMAAAAQkkkkkkkk/8QAFBEBAAAAAAAAAAAAAAAAAAAAQP/aAAgB +AwEBPxAH/8QAFBEBAAAAAAAAAAAAAAAAAAAAQP/aAAgBAgEBPxAH/8QAFBABAAAAAAAAAAAAAAAA +AAAAQP/aAAgBAQABPxAH/9k= +--Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3 +Content-Type: image/jpeg; + name=image1.jpeg; + x-apple-part-url="mf_314093B0-563C-414A-BE40-A83A2FFCDAB9/L0/001" +Content-Disposition: inline; + filename=image1.jpeg +Content-Transfer-Encoding: base64 +Content-Id: + +/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK +CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU +FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAAyADIDAREA +AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMB +AAIQAxAAAAGqQAAAAAAAAAAAAAAAAAAAAAAAD//EABQQAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQEA +AQUCR//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8BR//EABQRAQAAAAAAAAAAAAAAAAAA +AFD/2gAIAQIBAT8BR//EABQQAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQEABj8CR//EABQQAQAAAAAA +AAAAAAAAAAAAAFD/2gAIAQEAAT8hR//aAAwDAQACAAMAAAAQkkkkkkkkkkkkkkkkkkkkkkkkn//E +ABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQMBAT8QR//EABQRAQAAAAAAAAAAAAAAAAAAAFD/2gAI +AQIBAT8QR//EABQQAQAAAAAAAAAAAAAAAAAAAFD/2gAIAQEAAT8QR//Z + +--Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3 +Content-Type: image/jpeg; + name=image2.jpeg; + x-apple-part-url="mf_303F2F37-BE85-44A2-87A5-83B49DE9EA6C/L0/001" +Content-Disposition: inline; + filename=image2.jpeg +Content-Transfer-Encoding: base64 +Content-Id: + +/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsK +CwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQU +FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCABkAGQDAREA +AhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAj/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMB +AAIQAxAAAAGqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAD//EABQQAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQEAAQUCKf/EABQRAQAA +AAAAAAAAAAAAAAAAAHD/2gAIAQMBAT8BKf/EABQRAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQIBAT8B +Kf/EABQQAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQEABj8CKf/EABQQAQAAAAAAAAAAAAAAAAAAAHD/ +2gAIAQEAAT8hKf/aAAwDAQACAAMAAAAQkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkn//EABQRAQAAAAAAAAAAAAAAAAAAAHD/2gAI +AQMBAT8QKf/EABQRAQAAAAAAAAAAAAAAAAAAAHD/2gAIAQIBAT8QKf/EABQQAQAAAAAAAAAAAAAA +AAAAAHD/2gAIAQEAAT8QKf/Z +--Apple-Mail-E9473C4A-5698-46EE-ABDF-6F38D4C3ACC3-- + +--Apple-Mail-23186EA7-751B-466A-B348-44BA06879E29--