From cc15eda190aa95dbf98cbbdfdf703e2652945836 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 23 Sep 2019 12:15:25 +0200 Subject: [PATCH] Prefer links to unsubscribe --- .../main/java/eu/faircode/email/MessageHelper.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 79b388d5e4..088ebb7206 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -592,6 +592,8 @@ public class MessageHelper { if (list != null && list.startsWith("NO")) return null; + String link = null; + String mailto = null; for (String entry : list.split(",")) { entry = entry.trim(); int lt = entry.indexOf("<"); @@ -600,12 +602,18 @@ public class MessageHelper { String unsubscribe = entry.substring(lt + 1, gt); Uri uri = Uri.parse(unsubscribe); String scheme = uri.getScheme(); - if ("mailto".equals(scheme) || - "http".equals(scheme) || "https".equals(scheme)) - return unsubscribe; + if (mailto == null && "mailto".equals(scheme)) + mailto = unsubscribe; + if (link == null && ("http".equals(scheme) || "https".equals(scheme))) + link = unsubscribe; } } + if (link != null) + return link; + if (mailto != null) + return mailto; + Log.w(new IllegalArgumentException("List-Unsubscribe: " + list)); return null; } catch (AddressException ex) {