From aa166b20bd40e486c5362038aa3bef53b5593560 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 25 Nov 2021 12:44:18 +0100 Subject: [PATCH] Refactoring --- .../java/eu/faircode/email/MessageHelper.java | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 48ed409dfd..1cde83dd0b 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -273,35 +273,8 @@ public class MessageHelper { imessage.addHeader(HEADER_CORRELATION_ID, message.msgid); // Addresses - if (message.from != null && message.from.length > 0) { - InternetAddress from = ((InternetAddress) message.from[0]); - String email = from.getAddress(); - String name = from.getPersonal(); - - if (identity != null && identity.sender_extra && - email != null && message.extra != null) { - int at = email.indexOf('@'); - String username = UriHelper.getEmailUser(identity.email); - if (at > 0 && !message.extra.equals(username)) { - if (message.extra.length() > 1 && message.extra.startsWith("+")) - email = email.substring(0, at) + message.extra + email.substring(at); - else if (message.extra.length() > 1 && message.extra.startsWith("@")) - email = email.substring(0, at) + message.extra + '.' + email.substring(at + 1); - else - email = message.extra + email.substring(at); - - if (!identity.sender_extra_name) - name = null; - - Log.i("extra=\"" + name + "\" <" + email + ">"); - } - } - - if (EntityMessage.DSN_HARD_BOUNCE.equals(message.dsn)) - name = null; - - imessage.setFrom(new InternetAddress(email, name, StandardCharsets.UTF_8.name())); - } + if (message.from != null && message.from.length > 0) + imessage.setFrom(getFrom(message, identity)); if (message.to != null && message.to.length > 0) imessage.setRecipients(Message.RecipientType.TO, convertAddress(message.to, identity)); @@ -586,6 +559,36 @@ public class MessageHelper { return imessage; } + static Address getFrom(EntityMessage message, EntityIdentity identity) throws UnsupportedEncodingException { + InternetAddress from = ((InternetAddress) message.from[0]); + String email = from.getAddress(); + String name = from.getPersonal(); + + if (identity != null && identity.sender_extra && + email != null && message.extra != null) { + int at = email.indexOf('@'); + String username = UriHelper.getEmailUser(identity.email); + if (at > 0 && !message.extra.equals(username)) { + if (message.extra.length() > 1 && message.extra.startsWith("+")) + email = email.substring(0, at) + message.extra + email.substring(at); + else if (message.extra.length() > 1 && message.extra.startsWith("@")) + email = email.substring(0, at) + message.extra + '.' + email.substring(at + 1); + else + email = message.extra + email.substring(at); + + if (!identity.sender_extra_name) + name = null; + + Log.i("extra=\"" + name + "\" <" + email + ">"); + } + } + + if (EntityMessage.DSN_HARD_BOUNCE.equals(message.dsn)) + name = null; + + return new InternetAddress(email, name, StandardCharsets.UTF_8.name()); + } + private static void addAddress(String email, Message.RecipientType type, MimeMessage imessage, EntityIdentity identity) throws MessagingException { List
result = new ArrayList<>();