[#792] Send email from mail_handler for emails missing a project

This commit is contained in:
Eric Davis 2011-02-08 11:14:04 -08:00
parent 4ff670f5fa
commit 1dd07471ca
6 changed files with 34 additions and 2 deletions

View File

@ -106,6 +106,7 @@ class MailHandler < ActionMailer::Base
false false
rescue MissingInformation => e rescue MissingInformation => e
logger.error "MailHandler: missing information from #{user}: #{e.message}" if logger logger.error "MailHandler: missing information from #{user}: #{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 false
rescue UnauthorizedAction => e rescue UnauthorizedAction => e
logger.error "MailHandler: unauthorized attempt from #{user}" if logger logger.error "MailHandler: unauthorized attempt from #{user}" if logger

View File

@ -316,6 +316,13 @@ class Mailer < ActionMailer::Base
render_multipart('mail_handler_unauthorized_action', body) render_multipart('mail_handler_unauthorized_action', body)
end end
def mail_handler_missing_information(user, email_subject, error_message)
recipients user.mail
subject l(:label_mail_handler_failure, :subject => email_subject)
body({:errors => error_message.to_s})
render_multipart('mail_handler_missing_information', body)
end
def test(user) def test(user)
redmine_headers 'Type' => "Test" redmine_headers 'Type' => "Test"
set_language_if_valid(user.language) set_language_if_valid(user.language)

View File

@ -0,0 +1,3 @@
<p><%= l(:label_mail_handler_errors_with_submission) %></p>
<p><%= h(@errors) %></p>

View File

@ -0,0 +1,3 @@
<%= l(:label_mail_handler_errors_with_submission) %>
<%= h(@errors) %>

View File

@ -821,7 +821,8 @@ en:
label_toc: "Contents" label_toc: "Contents"
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}" label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
label_mail_handler_failure: "Failed email submission: %{subject}" label_mail_handler_failure: "Failed email submission: %{subject}"
label_mail_handler_errors_with_submission: "There were errors with your email submission:"
button_login: Login button_login: Login
button_submit: Submit button_submit: Submit
button_save: Save button_save: Save

View File

@ -476,12 +476,29 @@ class MailHandlerTest < ActiveSupport::TestCase
assert_equal 1, ActionMailer::Base.deliveries.size assert_equal 1, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries.last mail = ActionMailer::Base.deliveries.last
assert_not_nil mail assert_not_nil mail
assert mail.bcc.include?('jsmith@somenet.foo') assert mail.to.include?('jsmith@somenet.foo')
assert mail.subject.include?('Failed email submission: Re: Add ingredients categories') assert mail.subject.include?('Failed email submission: Re: Add ingredients categories')
assert mail.body.include?('You are not authorized to perform this action') assert mail.body.include?('You are not authorized to perform this action')
end end
end end
context "with an email that is missing required information" do
should "deliver an email error confirmation to the sender for a missing project" do
ActionMailer::Base.deliveries.clear
issue = submit_email('ticket_with_attachment.eml') # No project set
assert_equal false, issue
assert_equal 1, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.to.include?('jsmith@somenet.foo')
assert mail.subject.include?('Failed email submission: Ticket created by email with attachment')
assert mail.body.include?('There were errors with your email submission')
assert mail.body.include?('Unable to determine target project')
end
end
context "#receive_issue" do context "#receive_issue" do
should "deliver an email confirmation when configured" do should "deliver an email confirmation when configured" do
ActionMailer::Base.deliveries.clear ActionMailer::Base.deliveries.clear