From d51eee4dbca3c2cd5cf058a56f4f5f740b135054 Mon Sep 17 00:00:00 2001 From: Gerhard Schlager Date: Fri, 15 Sep 2017 17:22:51 +0200 Subject: [PATCH] FIX: don't try to send a rejection message when the sender was not detected --- config/locales/server.en.yml | 1 + lib/email/processor.rb | 2 +- lib/email/receiver.rb | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 1728eca737..cfa15f741f 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -68,6 +68,7 @@ en: no_message_id_error: "Happens when the mail has no 'Message-Id' header." auto_generated_email_error: "Happens when the 'precedence' header is set to: list, junk, bulk or auto_reply, or when any other header contains: auto-submitted, auto-replied or auto-generated." no_body_detected_error: "Happens when we couldn't extract a body and there were no attachments." + no_sender_detected_error: "Happens when we couldn't find a valid email address in the From header." inactive_user_error: "Happens when the sender is not active." blocked_user_error: "Happens when the sender has been blocked." bad_destination_address: "Happens when none of the email addresses in To/Cc/Bcc fields matched a configured incoming email address." diff --git a/lib/email/processor.rb b/lib/email/processor.rb index 9afa39dc78..20d2704da6 100644 --- a/lib/email/processor.rb +++ b/lib/email/processor.rb @@ -35,8 +35,8 @@ module Email def handle_failure(mail_string, e) message_template = case e + when Email::Receiver::NoSenderDetectedError then return nil when Email::Receiver::EmptyEmailError then :email_reject_empty - when Email::Receiver::NoSenderDetectedError then :email_reject_empty when Email::Receiver::NoBodyDetectedError then :email_reject_empty when Email::Receiver::UserNotFoundError then :email_reject_user_not_found when Email::Receiver::ScreenedEmailError then :email_reject_screened_email diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index e3e43f24f8..2d34a5b2df 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -9,6 +9,9 @@ module Email class Receiver include ActionView::Helpers::NumberHelper + # If you add a new error, you need to + # * add it to Email::Processor#handle_failure() + # * add text to server.en.yml (parent key: "emails.incoming.errors") class ProcessingError < StandardError; end class EmptyEmailError < ProcessingError; end class ScreenedEmailError < ProcessingError; end @@ -266,6 +269,13 @@ module Email def parse_from_field(mail) return unless mail[:from] + if mail.subject == "Test" + foo = [] + if foo[/<[^>]+>/] + bar = 2 + end + end + if mail[:from].errors.blank? mail[:from].address_list.addresses.each do |address_field| address_field.decoded