mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-03-14 00:50:14 -04:00
Merge pull request #2421 from peternlewis/reply_to_name
Use an appropriate name in the Reply-To header
This commit is contained in:
commit
c176dc07c1
3 changed files with 53 additions and 2 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue