diff --git a/app/src/main/java/eu/faircode/email/HtmlHelper.java b/app/src/main/java/eu/faircode/email/HtmlHelper.java index c8d336c628..8902cc0e94 100644 --- a/app/src/main/java/eu/faircode/email/HtmlHelper.java +++ b/app/src/main/java/eu/faircode/email/HtmlHelper.java @@ -45,7 +45,8 @@ public class HtmlHelper implements NodeVisitor { private String newline; private List refs = new ArrayList<>(); private StringBuilder sb = new StringBuilder(); - private Pattern pattern = Pattern.compile("([http|https]+://[\\w\\S(\\.|:|/)]+)"); + + private static Pattern pattern = Pattern.compile("([http|https]+://[\\w\\S(\\.|:|/)]+)"); private HtmlHelper(Context context, boolean reply) { this.context = context; @@ -56,7 +57,6 @@ public class HtmlHelper implements NodeVisitor { String name = node.nodeName(); if (node instanceof TextNode) { String text = ((TextNode) node).text(); - text = Html.escapeHtml(text); Matcher matcher = pattern.matcher(text); while (matcher.find()) { String ref = matcher.group(); @@ -125,6 +125,25 @@ public class HtmlHelper implements NodeVisitor { Document document = Jsoup.parse(Jsoup.clean(html, Whitelist.relaxed())); for (Element tr : document.select("tr")) tr.after("
"); + NodeTraversor.traverse(new NodeVisitor() { + @Override + public void head(Node node, int depth) { + if (node instanceof TextNode) { + String text = ((TextNode) node).text(); + Matcher matcher = pattern.matcher(text); + while (matcher.find()) { + String ref = matcher.group(); + text = text.replace(ref, String.format("%s", ref, ref)); + } + node.before(text); + ((TextNode) node).text(""); + } + } + + @Override + public void tail(Node node, int depth) { + } + }, document.body()); return document.body().html(); } }