diff options
-rw-r--r-- | app/models/info_request.rb | 18 | ||||
-rw-r--r-- | app/models/request_mailer.rb | 6 |
2 files changed, 24 insertions, 0 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb index a32aff1fb..7cee3fe1c 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -324,6 +324,23 @@ public end end + # Has this email already been received here? Based just on message id. + def already_received?(email, raw_email_data) + message_id = email.message_id + if message_id.nil? + raise "No message id for this message" + end + + for im in self.incoming_messages + other_message_id = im.mail.message_id + if message_id == other_message_id + return true + end + end + + return false + end + # A new incoming email to this request def receive(email, raw_email_data, override_stop_new_responses = false) if !override_stop_new_responses @@ -388,6 +405,7 @@ public RequestMailer.deliver_new_response(self, incoming_message) end + # An annotation (comment) is made def add_comment(body, user) comment = Comment.new diff --git a/app/models/request_mailer.rb b/app/models/request_mailer.rb index 0d55d1d96..1bebb5181 100644 --- a/app/models/request_mailer.rb +++ b/app/models/request_mailer.rb @@ -192,6 +192,12 @@ class RequestMailer < ApplicationMailer # Send the message to each request, to be archived with it for reply_info_request in reply_info_requests + # If environment variable STOP_DUPLICATES is set, don't send message with same id again + if ENV['STOP_DUPLICATES'] + if reply_info_request.already_received?(email, raw_email) + raise "message " + email.message_id + " already received by request" + end + end reply_info_request.receive(email, raw_email) end end |