[#792] Send email from mail_handler for emails which are missing required information

This commit is contained in:
Eric Davis 2011-02-08 11:30:01 -08:00
parent 1dd07471ca
commit dc541597ec
3 changed files with 43 additions and 0 deletions

View File

@ -103,6 +103,7 @@ class MailHandler < ActionMailer::Base
rescue ActiveRecord::RecordInvalid => e
# TODO: send a email to the user
logger.error e.message if logger
Mailer.deliver_mail_handler_missing_information(user, email.subject.to_s, e.message) if Setting.mail_handler_confirmation_on_failure
false
rescue MissingInformation => e
logger.error "MailHandler: missing information from #{user}: #{e.message}" if logger

View File

@ -0,0 +1,23 @@
Return-Path: <JSmith@somenet.foo>
Received: from osiris ([127.0.0.1])
by OSIRIS
with hMailServer ; Sun, 22 Jun 2008 12:28:07 +0200
Message-ID: <000501c8d452$a95cd7e0$0a00a8c0@osiris>
From: "John Smith" <JSmith@somenet.foo>
To: <redmine@somenet.foo>
Subject: New ticket on a given project
Date: Sun, 22 Jun 2008 12:28:07 +0200
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset="iso-8859-1";
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2869
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869
Test with missing information
Project: onlinestore

View File

@ -497,6 +497,25 @@ class MailHandlerTest < ActiveSupport::TestCase
assert mail.body.include?('Unable to determine target project')
end
should "deliver an email error confirmation to the sender for a missing other attributes" do
# Add a required custom field to simulate the error
project = Project.find('onlinestore')
project.issue_custom_fields << IssueCustomField.generate(:name => 'Required Custom Field0', :is_required => true, :trackers => project.trackers)
project.save
ActionMailer::Base.deliveries.clear
issue = submit_email('ticket_on_project_with_missing_information.eml')
assert_equal false, issue
assert_equal 1, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.bcc.include?('jsmith@somenet.foo')
assert mail.subject.include?('Failed email submission: New ticket on a given project')
assert mail.body.include?('There were errors with your email submission')
assert mail.body.include?('Required Custom Field0 can\'t be blank')
end
end
context "#receive_issue" do