From 21893d607eef859cc92e98b57bfa3b32f428a716 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 12 Sep 2026 21:11:17 +0200 Subject: [PATCH] Added new expression condition variables --- FAQ.md | 4 ++ .../eu/faircode/email/ExpressionHelper.java | 40 ++++++++++++++++--- index.html | 4 ++ 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/FAQ.md b/FAQ.md index 58c3efbebc..b9bef222a8 100644 --- a/FAQ.md +++ b/FAQ.md @@ -3021,8 +3021,12 @@ Commonly used are && (=and) and || (=or). The following extra variables are available: * *received* (long, unix epoch in milliseconds; since version 1.2179) +* *submitter* (array of strings, sent on behalf of; since version 1.2234) * *from* (array of strings) * *to* (array of strings) +* *cc* (array of strings; since version 1.2234) +* *bcc* (array of strings; since version 1.2234) +* *replyto* (array of strings; since version 1.2234) * *subject* (string) * *text* (string) * *hasAttachments* (boolean; deprecated, use function *attachments()* instead) diff --git a/app/src/main/java/eu/faircode/email/ExpressionHelper.java b/app/src/main/java/eu/faircode/email/ExpressionHelper.java index ee3a1ae319..aa4a02dca4 100644 --- a/app/src/main/java/eu/faircode/email/ExpressionHelper.java +++ b/app/src/main/java/eu/faircode/email/ExpressionHelper.java @@ -85,16 +85,41 @@ public class ExpressionHelper { return null; String eval = jcondition.getString("expression"); - List to = new ArrayList<>(); - if (message != null && message.to != null) - for (Address a : message.to) - to.add(MessageHelper.formatAddresses(new Address[]{a})); + List return_path = new ArrayList<>(); + if (message != null && message.return_path != null) + for (Address a : message.return_path) + return_path.add(MessageHelper.formatAddresses(new Address[]{a})); + + List submitter = new ArrayList<>(); + if (message != null && message.submitter != null) + for (Address a : message.submitter) + submitter.add(MessageHelper.formatAddresses(new Address[]{a})); List from = new ArrayList<>(); if (message != null && message.from != null) for (Address a : message.from) from.add(MessageHelper.formatAddresses(new Address[]{a})); + List to = new ArrayList<>(); + if (message != null && message.to != null) + for (Address a : message.to) + to.add(MessageHelper.formatAddresses(new Address[]{a})); + + List cc = new ArrayList<>(); + if (message != null && message.cc != null) + for (Address a : message.cc) + cc.add(MessageHelper.formatAddresses(new Address[]{a})); + + List bcc = new ArrayList<>(); + if (message != null && message.bcc != null) + for (Address a : message.bcc) + bcc.add(MessageHelper.formatAddresses(new Address[]{a})); + + List replyto = new ArrayList<>(); + if (message != null && message.reply != null) + for (Address a : message.reply) + replyto.add(MessageHelper.formatAddresses(new Address[]{a})); + if (html == null && message != null && message.content) try { html = Helper.readText(message.getFile(context)); @@ -148,8 +173,13 @@ public class ExpressionHelper { Expression expression = new Expression(eval, configuration) .with("received", message == null ? null : message.received) - .with("to", to) + .with("return_path", return_path) + .with("submitter", submitter) .with("from", from) + .with("to", to) + .with("cc", cc) + .with("bcc", bcc) + .with("replyto", replyto) .with("subject", message == null ? null : message.subject) .with("text", doc == null ? null : doc.text()); diff --git a/index.html b/index.html index f94c93b242..8b62b1ba8a 100644 --- a/index.html +++ b/index.html @@ -1647,8 +1647,12 @@ X-Google-Original-From: Somebody <somebody+extra@example.org>

The following extra variables are available:

  • received (long, unix epoch in milliseconds; since version 1.2179)
  • +
  • submitter (array of strings, sent on behalf of; since version 1.2234)
  • from (array of strings)
  • to (array of strings)
  • +
  • cc (array of strings; since version 1.2234)
  • +
  • bcc (array of strings; since version 1.2234)
  • +
  • replyto (array of strings; since version 1.2234)
  • subject (string)
  • text (string)
  • hasAttachments (boolean; deprecated, use function attachments() instead)