Skip to content

Commit bc59fa1

Browse files
committed
Allow custom email headers to be set in tess.yml config
1 parent 0380ddb commit bc59fa1

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

app/mailers/application_mailer.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
class ApplicationMailer < ActionMailer::Base
22
default from: TeSS::Config.sender_email
33
layout 'mailer'
4+
before_action :set_headers
5+
6+
private
7+
8+
def set_headers
9+
return unless TeSS::Config.mailer
10+
(TeSS::Config.mailer['headers'] || {}).each do |key, value|
11+
headers[key] = value
12+
end
13+
end
414
end

test/mailers/curation_mailer_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,19 @@ class CurationMailerTest < ActionMailer::TestCase
6868

6969
assert html.include?(curate_users_url), 'Expected curation link'
7070
end
71+
72+
test 'can set mailer headers in config' do
73+
mailer_settings = TeSS::Config.mailer
74+
TeSS::Config.mailer['headers'] = { 'Sender' => 'mail.sender@example.com', 'X-Something' => 'yes' }
75+
email = CurationMailer.user_requires_approval(@user)
76+
77+
email_headers = {}
78+
email.header.fields.each { |f| email_headers[f.name] = f.value }
79+
80+
assert_equal 'no-reply@example.com', email_headers['From']
81+
assert_equal 'mail.sender@example.com', email_headers['Sender']
82+
assert_equal 'yes', email_headers['X-Something']
83+
ensure
84+
TeSS::Config.mailer = mailer_settings
85+
end
7186
end

0 commit comments

Comments
 (0)