From 9f3ce6bd4fcf92568dbbf7859ac55ccab2da96e7 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 23 Apr 2019 16:18:21 +0200 Subject: [PATCH] Validate addresses before sending --- .../eu/faircode/email/FragmentCompose.java | 32 +++++++++++++++++-- .../main/java/eu/faircode/email/Helper.java | 7 ++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index ab7b9ddecd..069c61dbaf 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -188,6 +188,8 @@ public class FragmentCompose extends FragmentBase { static final int REDUCED_IMAGE_SIZE = 1440; // pixels static final int REDUCED_IMAGE_QUALITY = 90; // percent + private static final int ADDRESS_ELLIPSIZE = 50; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -2169,13 +2171,37 @@ public class FragmentCompose extends FragmentBase { InternetAddress abcc[] = null; if (!TextUtils.isEmpty(to)) - ato = InternetAddress.parse(to); + try { + ato = InternetAddress.parse(to); + if (action == R.id.action_send) + for (InternetAddress address : ato) + address.validate(); + } catch (AddressException ex) { + throw new AddressException(context.getString(R.string.title_address_parse_error, + Helper.ellipsize(to, ADDRESS_ELLIPSIZE), ex.getMessage())); + } if (!TextUtils.isEmpty(cc)) - acc = InternetAddress.parse(cc); + try { + acc = InternetAddress.parse(cc); + if (action == R.id.action_send) + for (InternetAddress address : acc) + address.validate(); + } catch (AddressException ex) { + throw new AddressException(context.getString(R.string.title_address_parse_error, + Helper.ellipsize(cc, ADDRESS_ELLIPSIZE), ex.getMessage())); + } if (!TextUtils.isEmpty(bcc)) - abcc = InternetAddress.parse(bcc); + try { + abcc = InternetAddress.parse(bcc); + if (action == R.id.action_send) + for (InternetAddress address : abcc) + address.validate(); + } catch (AddressException ex) { + throw new AddressException(context.getString(R.string.title_address_parse_error, + Helper.ellipsize(bcc, ADDRESS_ELLIPSIZE), ex.getMessage())); + } if (TextUtils.isEmpty(extra)) extra = null; diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index d6adfa8ecd..b6dfe2fae7 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1217,4 +1217,11 @@ public class Helper { else return DateUtils.getRelativeTimeSpanString(context, millis); } + + static String ellipsize(String text, int maxLen) { + if (text == null || text.length() < maxLen) { + return text; + } + return text.substring(0, maxLen) + "..."; + } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ebb04999d9..5b99466ed4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -276,6 +276,7 @@ Name missing Email address missing Email address invalid + Address \'%1$s\' invalid: %2$s Account missing Host name missing User name missing