FIX: don't overwrite custom email headers when using mandrill/sparkpost
This commit is contained in:
parent
6aacc655d1
commit
f8caae0be7
|
@ -138,9 +138,9 @@ module Email
|
||||||
when /\.mailjet\.com/
|
when /\.mailjet\.com/
|
||||||
@message.header['X-MJ-CustomID'] = @message.message_id
|
@message.header['X-MJ-CustomID'] = @message.message_id
|
||||||
when "smtp.mandrillapp.com"
|
when "smtp.mandrillapp.com"
|
||||||
@message.header['X-MC-Metadata'] = { message_id: @message.message_id }.to_json
|
merge_json_x_header('X-MC-Metadata', { message_id: @message.message_id })
|
||||||
when "smtp.sparkpostmail.com"
|
when "smtp.sparkpostmail.com"
|
||||||
@message.header['X-MSYS-API'] = { metadata: { message_id: @message.message_id } }.to_json
|
merge_json_x_header('X-MSYS-API', { metadata: { message_id: @message.message_id } })
|
||||||
end
|
end
|
||||||
|
|
||||||
# Suppress images from short emails
|
# Suppress images from short emails
|
||||||
|
@ -202,5 +202,13 @@ module Email
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def merge_json_x_header(name, value)
|
||||||
|
mc_metadata = JSON.parse(@message.header[name].to_s) rescue nil
|
||||||
|
mc_metadata ||= {}
|
||||||
|
mc_metadata.merge!(value)
|
||||||
|
@message.header[name] = nil
|
||||||
|
@message.header[name] = mc_metadata.to_json
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -139,6 +139,26 @@ describe Email::Sender do
|
||||||
Then { expect(message.header['X-Discourse-Reply-Key']).not_to be_present }
|
Then { expect(message.header['X-Discourse-Reply-Key']).not_to be_present }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "merges custom mandrill header" do
|
||||||
|
before do
|
||||||
|
ActionMailer::Base.smtp_settings[:address] = "smtp.mandrillapp.com"
|
||||||
|
message.header['X-MC-Metadata'] = { foo: "bar" }.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
When { email_sender.send }
|
||||||
|
Then { expect(message.header['X-MC-Metadata'].to_s).to match(message.message_id) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "merges custom sparkpost header" do
|
||||||
|
before do
|
||||||
|
ActionMailer::Base.smtp_settings[:address] = "smtp.sparkpostmail.com"
|
||||||
|
message.header['X-MSYS-API'] = { foo: "bar" }.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
When { email_sender.send }
|
||||||
|
Then { expect(message.header['X-MSYS-API'].to_s).to match(message.message_id) }
|
||||||
|
end
|
||||||
|
|
||||||
context 'email logs' do
|
context 'email logs' do
|
||||||
let(:email_log) { EmailLog.last }
|
let(:email_log) { EmailLog.last }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue