From 32ea86c62f8ab6a7c4a98e33ec6aa53a2e33eeeb Mon Sep 17 00:00:00 2001 From: Lucas Marcouiller <45882981+Hystepik@users.noreply.github.com> Date: Tue, 25 Jun 2024 15:19:26 +0200 Subject: [PATCH] Fix reply-to filter for email collector (#30152) Co-authored-by: Hystepik --- .../class/emailcollector.class.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index a9be42ec9eb..8c71088f1a1 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1104,6 +1104,7 @@ class EmailCollector extends CommonObject $searchfilterexcludebodyarray = array(); $searchfilterexcludesubjectarray = array(); $operationslog = ''; + $rulesreplyto = array(); $now = dol_now(); @@ -1390,6 +1391,7 @@ class EmailCollector extends CommonObject if ($rule['type'] == 'replyto') { $searchfilterreplyto++; + $rulesreplyto[] = $rule['rulevalue']; $searchhead .= '/Reply-To.*'.preg_quote($rule['rulevalue'], '/').'/'; } } @@ -1531,6 +1533,7 @@ class EmailCollector extends CommonObject if ($rule['type'] == 'replyto') { $searchfilterreplyto++; + $rulesreplyto[] = $rule['rulevalue']; $searchhead .= '/Reply-To.*'.preg_quote($rule['rulevalue'], '/').'/'; } } @@ -1763,6 +1766,22 @@ class EmailCollector extends CommonObject } } } + if ($searchfilterreplyto > 0) { + if (!empty($headers['Reply-To'])) { + $isreplytook = 0; + foreach ($rulesreplyto as $key => $rulereplyto) { + if (preg_match('/'.preg_quote($rulereplyto, '/').'/', $headers['Reply-To'])) { + $isreplytook ++; + } + } + + if (!$isreplytook || $isreplytook != count($rulesreplyto)) { + $nbemailprocessed++; + dol_syslog(" Discarded - Reply-to does not match"); + continue; // Exclude email + } + } + } //print "Process mail ".$iforemailloop." Subject: ".dol_escape_htmltag($headers['Subject'])." selected
\n";