Defect #30785
Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | % Done: | 0% | ||
Category: | Email receiving | |||
Target version: | 4.0.2 | |||
Resolution: | Fixed | Affected version: |
Description
According to the comment at source:tags/4.0.1/app/models/mail_handler.rb#L93, mail handler is supposed to ignore emails sent from emission email address (Setting.mail_from
). It behaves as expected if Setting.mail_from
only includes an email address like "joe@example.com". However, it does not ignore the emails if Setting.mail_from
includes a display name like "Joe Bloggs <joe@example.com>". The reason is that the code at source:tags/4.0.1/app/models/mail_handler.rb#L94 don't assume the format other than "joe@example.com".
- OK:
joe@example.com
- NG:
<joe@example.com>
- NG:
Joe Bloggs <joe@example.com>
- NG:
joe@example.com (Joe Bloggs)
Related issues
Associated revisions
Fix: Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name (#30785).
Patch by Go MAEDA.
Reverts r17862.
Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name (#30785).
Patch by Go MAEDA.
History
#1
Updated by Go MAEDA over 3 years ago
- Related to Defect #14792: Don't add a display name and extra angle brackets in List-Id header field added
#2
Updated by Go MAEDA over 3 years ago
This fix works for ordinary email addresses.
Index: app/models/mail_handler.rb
===================================================================
--- app/models/mail_handler.rb (revision 17853)
+++ app/models/mail_handler.rb (working copy)
@@ -91,7 +91,7 @@
@handler_options = options
sender_email = email.from.to_a.first.to_s.strip
# Ignore emails received from the application emission address to avoid hell cycles
- if sender_email.casecmp(Setting.mail_from.to_s.strip) == 0
+ if sender_email.casecmp(Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\)|\s)/, '')) == 0
if logger
logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]"
end
#3
Updated by Go MAEDA over 3 years ago
- File 30785-fix.diff added
#4
Updated by Go MAEDA over 3 years ago
- File deleted (
30785-fix.diff)
#5
Updated by Go MAEDA over 3 years ago
- File 30785-fix.diff
added
#6
Updated by Go MAEDA over 3 years ago
- Target version set to 4.0.2
Setting the target version to 4.0.2.
#7
Updated by Go MAEDA over 3 years ago
- Subject changed from Mail handler may not ignore emails sent from emission email address to Mail handler does not ignore emails sent from emission email address if Setting.mail_from includes display name
- Status changed from New to Resolved
- Assignee set to Go MAEDA
- Resolution set to Fixed
Committed.
#8
Updated by Go MAEDA over 3 years ago
- Status changed from Resolved to Closed
#9
Updated by Go MAEDA over 3 years ago
- Status changed from Closed to Reopened
Go MAEDA wrote:
The patch adds a new method
Setting.mail_from_addess
to extract an email address from the value of Setting.mail_from. I think it is useful to fix #14792 and implement #5913.
#5913 and #14792 have been fixed without using newly added Setting.mail_from_addess
method. Only MailHandler#receive uses the method now and I don't think other methods will use it in the future.
Therefore, I think r17862 should be reverted before releasing Redmine 4.0.2 and this issue should be fixed like the following:
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index 9298e1b12..aed977bbd 100755
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -91,7 +91,7 @@ class MailHandler < ActionMailer::Base
@handler_options = options
sender_email = email.from.to_a.first.to_s.strip
# Ignore emails received from the application emission address to avoid hell cycles
- if sender_email.casecmp(Setting.mail_from.to_s.strip) == 0
+ if sender_email.casecmp(Setting.mail_from.to_s.gsub(/(?:.*<|>.*|\(.*\))/, '').strip) == 0
if logger
logger.info "MailHandler: ignoring email from Redmine emission address [#{sender_email}]"
end
#10
Updated by Go MAEDA over 3 years ago
- File 30785-fix-v2.patch
added
#11
Updated by Go MAEDA over 3 years ago
- Status changed from Reopened to Closed