Merge pull request #2421 from peternlewis/reply_to_name

Use an appropriate name in the Reply-To header
This commit is contained in:
Robin Ward 2014-06-09 11:04:53 -04:00
commit c176dc07c1
3 changed files with 53 additions and 2 deletions

View File

@ -215,6 +215,7 @@ class UserNotifications < ActionMailer::Base
username: from_alias,
add_unsubscribe_link: true,
allow_reply_by_email: allow_reply_by_email,
private_reply: post.topic.private_message?,
include_respond_instructions: !user.suspended?,
template: template,
html_override: html,

View File

@ -136,6 +136,13 @@ module Email
@opts[:allow_reply_by_email]
end
def private_reply?
SiteSetting.reply_by_email_enabled? &&
reply_by_email_address.present? &&
@opts[:allow_reply_by_email] &&
@opts[:private_reply]
end
def from_value
return @from_value if @from_value
@from_value = @opts[:from] || SiteSetting.notification_email
@ -149,7 +156,11 @@ module Email
@reply_by_email_address = SiteSetting.reply_by_email_address.dup
@reply_by_email_address.gsub!("%{reply_key}", reply_key)
@reply_by_email_address = alias_email(@reply_by_email_address)
@reply_by_email_address = if private_reply?
alias_email(@reply_by_email_address)
else
site_alias_email(@reply_by_email_address)
end
@reply_by_email_address
end
@ -159,6 +170,10 @@ module Email
"#{@opts[:from_alias]} <#{source}>"
end
def site_alias_email(source)
return "#{SiteSetting.title} <#{source}>"
end
end
end

View File

@ -54,7 +54,42 @@ describe Email::MessageBuilder do
end
it "returns a Reply-To header with the reply key" do
expect(reply_by_email_builder.header_args['Reply-To']).to eq("r+#{reply_key}@reply.myforum.com")
expect(reply_by_email_builder.header_args['Reply-To']).to eq(SiteSetting.title + " <r+#{reply_key}@reply.myforum.com>")
end
end
context "With the SiteSetting disabled" do
before do
SiteSetting.stubs(:reply_by_email_enabled?).returns(false)
end
it "has no X-Discourse-Reply-Key" do
expect(reply_key).to be_blank
end
it "returns a Reply-To header that's the same as From" do
expect(header_args['Reply-To']).to eq(build_args[:from])
end
end
end
context "with allow_reply_by_email" do
let(:reply_by_email_builder) { Email::MessageBuilder.new(to_address, allow_reply_by_email: true, private_reply: true, from_alias: "Username") }
let(:reply_key) { reply_by_email_builder.header_args['X-Discourse-Reply-Key'] }
context "With the SiteSetting enabled" do
before do
SiteSetting.stubs(:reply_by_email_enabled?).returns(true)
SiteSetting.stubs(:reply_by_email_address).returns("r+%{reply_key}@reply.myforum.com")
end
it "has a X-Discourse-Reply-Key" do
expect(reply_key).to be_present
expect(reply_key.size).to eq(32)
end
it "returns a Reply-To header with the reply key" do
expect(reply_by_email_builder.header_args['Reply-To']).to eq("Username <r+#{reply_key}@reply.myforum.com>")
end
end