From f3ef62dc682e2c149ff549c81c12090e932fa302 Mon Sep 17 00:00:00 2001 From: Awlex Date: Wed, 30 Jun 2021 10:58:14 +0200 Subject: [PATCH 1/2] Keep original order of text parts --- lib/mail/renderers/rfc_2822.ex | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/mail/renderers/rfc_2822.ex b/lib/mail/renderers/rfc_2822.ex index d41fe28..eca45ca 100644 --- a/lib/mail/renderers/rfc_2822.ex +++ b/lib/mail/renderers/rfc_2822.ex @@ -255,10 +255,7 @@ defmodule Mail.Renderers.RFC2822 do content_type = Mail.Message.get_content_type(message) if Mail.Message.has_attachment?(message) do - text_parts = - Enum.filter(message.parts, &match_content_type?(&1, ~r/text\/(plain|html)/)) - |> Enum.sort(&(&1 > &2)) - + text_parts = Enum.filter(message.parts, &match_content_type?(&1, ~r/text\/(plain|html)/)) content_type = List.replace_at(content_type, 0, "multipart/mixed") message = Mail.Message.put_content_type(message, content_type) From 68123358d53e611d013522733159b362fed883a0 Mon Sep 17 00:00:00 2001 From: Awlex Date: Mon, 5 Jul 2021 09:44:19 +0200 Subject: [PATCH 2/2] filter attachment text parts --- lib/mail/renderers/rfc_2822.ex | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/mail/renderers/rfc_2822.ex b/lib/mail/renderers/rfc_2822.ex index eca45ca..85296e6 100644 --- a/lib/mail/renderers/rfc_2822.ex +++ b/lib/mail/renderers/rfc_2822.ex @@ -1,5 +1,5 @@ defmodule Mail.Renderers.RFC2822 do - import Mail.Message, only: [match_content_type?: 2] + import Mail.Message, only: [match_content_type?: 2, is_attachment?: 1] @days ~w(Mon Tue Wed Thu Fri Sat Sun) @months ~w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) @@ -255,7 +255,12 @@ defmodule Mail.Renderers.RFC2822 do content_type = Mail.Message.get_content_type(message) if Mail.Message.has_attachment?(message) do - text_parts = Enum.filter(message.parts, &match_content_type?(&1, ~r/text\/(plain|html)/)) + text_parts = + Enum.filter( + message.parts, + &(match_content_type?(&1, ~r/text\/(plain|html)/) and not is_attachment?(&1)) + ) + content_type = List.replace_at(content_type, 0, "multipart/mixed") message = Mail.Message.put_content_type(message, content_type)