diff --git a/app/models/incoming_email.rb b/app/models/incoming_email.rb index 2b33700a66d..be5bfdce60a 100644 --- a/app/models/incoming_email.rb +++ b/app/models/incoming_email.rb @@ -4,6 +4,8 @@ class IncomingEmail < ActiveRecord::Base belongs_to :post scope :errored, -> { where("NOT is_bounce AND error IS NOT NULL") } + + scope :addressed_to, -> (email) { where('incoming_emails.to_addresses ILIKE :email OR incoming_emails.cc_addresses ILIKE :email', email: "%#{email}%") } end # == Schema Information diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 2570a0bf3a9..fbf4e7f84df 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -446,8 +446,8 @@ module Email incoming_emails = IncomingEmail .joins(:post) .where('posts.topic_id = ?', email_log.topic_id) - .where('incoming_emails.to_addresses ILIKE :email OR incoming_emails.cc_addresses ILIKE :email', email: "%#{email_log.reply_key}%") - .where('incoming_emails.to_addresses ILIKE :email OR incoming_emails.cc_addresses ILIKE :email', email: "%#{user.email}%") + .addressed_to(email_log.reply_key) + .addressed_to(user.email) incoming_emails.each do |email| next unless contains_email_address?(email.to_addresses, user.email) || diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index 75ef299f93f..39451cb49bf 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -399,18 +399,18 @@ describe Email::Receiver do it "accepts emails with wrong reply key if the system knows about the forwareded email" do Fabricate(:incoming_email, raw: <<~RAW, - Return-Path: - From: Alice - To: dave@bar.com, reply+4f97315cc828096c9cb34c6f1a0d6fe8@bar.com - CC: carol@bar.com, bob@bar.com - Subject: Hello world - Date: Fri, 15 Jan 2016 00:12:43 +0100 - Message-ID: <10@foo.bar.mail> - Mime-Version: 1.0 - Content-Type: text/plain; charset=UTF-8 - Content-Transfer-Encoding: quoted-printable + Return-Path: + From: Alice + To: dave@bar.com, reply+4f97315cc828096c9cb34c6f1a0d6fe8@bar.com + CC: carol@bar.com, bob@bar.com + Subject: Hello world + Date: Fri, 15 Jan 2016 00:12:43 +0100 + Message-ID: <10@foo.bar.mail> + Mime-Version: 1.0 + Content-Type: text/plain; charset=UTF-8 + Content-Transfer-Encoding: quoted-printable - This post was created by email. + This post was created by email. RAW from_address: "discourse@bar.com", to_addresses: "dave@bar.com;reply+4f97315cc828096c9cb34c6f1a0d6fe8@bar.com",