Feature #5913 » 5913-authors-name-in-from-field.patch
app/models/mailer.rb | ||
---|---|---|
615 | 615 |
end |
616 | 616 | |
617 | 617 |
def mail(headers={}, &block) |
618 |
# Assign a display name to the From field if Setting.mail_from does not |
|
619 |
# include it |
|
620 |
mail_from = Mail::Address.new(Setting.mail_from) |
|
621 |
if mail_from.display_name.blank? && mail_from.comments.blank? |
|
622 |
mail_from.display_name = |
|
623 |
(@author && @author.logged?) ? @author.name : Setting.app_title |
|
624 |
end |
|
625 | ||
618 | 626 |
headers.reverse_merge! 'X-Mailer' => 'Redmine', |
619 | 627 |
'X-Redmine-Host' => Setting.host_name, |
620 | 628 |
'X-Redmine-Site' => Setting.app_title, |
621 | 629 |
'X-Auto-Response-Suppress' => 'All', |
622 | 630 |
'Auto-Submitted' => 'auto-generated', |
623 |
'From' => Setting.mail_from,
|
|
624 |
'List-Id' => "<#{Setting.mail_from.to_s.tr('@', '.')}>"
|
|
631 |
'From' => mail_from.format,
|
|
632 |
'List-Id' => "<#{mail_from.address.to_s.tr('@', '.')}>"
|
|
625 | 633 | |
626 | 634 |
# Replaces users with their email addresses |
627 | 635 |
[:to, :cc, :bcc].each do |key| |
test/unit/mailer_test.rb | ||
---|---|---|
249 | 249 |
assert_equal 'Redmine app <redmine@example.net>', mail.header['From'].to_s |
250 | 250 |
end |
251 | 251 | |
252 |
def test_from_header_with_author_name |
|
253 |
# Use the author's name or Setting.app_title as a display name |
|
254 |
# when Setting.mail_from does not include a display name |
|
255 |
with_settings :mail_from => 'redmine@example.net', :app_title => 'Foo' do |
|
256 |
# Use @author.name as a display name |
|
257 |
Issue.create!(:project_id => 1, :tracker_id => 1, :status_id => 5, |
|
258 |
:subject => 'Issue created by Dave Lopper', :author_id => 3) |
|
259 |
mail = last_email |
|
260 |
assert_equal 'redmine@example.net', mail.from_addrs.first |
|
261 |
assert_equal 'Dave Lopper <redmine@example.net>', mail.header['From'].to_s |
|
262 | ||
263 |
# Use app_title if @author is nil or AnonymousUser |
|
264 |
Mailer.deliver_test_email(User.find(1)) |
|
265 |
mail = last_email |
|
266 |
assert_equal 'redmine@example.net', mail.from_addrs.first |
|
267 |
assert_equal "Foo <redmine@example.net>", mail.header['From'].to_s |
|
268 |
end |
|
269 |
end |
|
270 | ||
252 | 271 |
def test_should_not_send_email_without_recipient |
253 | 272 |
news = News.first |
254 | 273 |
user = news.author |