mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-30 10:58:31 -05:00
FIX: cleanup aliases in email From and Reply-to fields to prevent Bad sender address syntax errors
This commit is contained in:
parent
3b76fd82fd
commit
50ac4c6336
3 changed files with 23 additions and 3 deletions
|
@ -21,4 +21,9 @@ module Email
|
|||
email.downcase
|
||||
end
|
||||
|
||||
def self.cleanup_alias(name)
|
||||
# TODO: I'm sure there are more, but I can't find a list
|
||||
name ? name.gsub(/[:<>]/, '') : name
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -165,14 +165,14 @@ module Email
|
|||
def alias_email(source)
|
||||
return source if @opts[:from_alias].blank? && SiteSetting.email_site_title.blank?
|
||||
if !@opts[:from_alias].blank?
|
||||
"#{@opts[:from_alias]} <#{source}>"
|
||||
"#{Email.cleanup_alias(@opts[:from_alias])} <#{source}>"
|
||||
else
|
||||
"#{SiteSetting.email_site_title} <#{source}>"
|
||||
"#{Email.cleanup_alias(SiteSetting.email_site_title)} <#{source}>"
|
||||
end
|
||||
end
|
||||
|
||||
def site_alias_email(source)
|
||||
"#{SiteSetting.email_site_title.presence || SiteSetting.title} <#{source}>"
|
||||
"#{Email.cleanup_alias(SiteSetting.email_site_title.presence || SiteSetting.title)} <#{source}>"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -56,6 +56,11 @@ describe Email::MessageBuilder do
|
|||
it "returns a Reply-To header with the reply key" do
|
||||
expect(reply_by_email_builder.header_args['Reply-To']).to eq(SiteSetting.title + " <r+#{reply_key}@reply.myforum.com>")
|
||||
end
|
||||
|
||||
it "cleans up the site title" do
|
||||
SiteSetting.stubs(:title).returns(">>>Obnoxious Title: Deal With It<<<")
|
||||
expect(reply_by_email_builder.header_args['Reply-To']).to eq("Obnoxious Title Deal With It <r+#{reply_key}@reply.myforum.com>")
|
||||
end
|
||||
end
|
||||
|
||||
context "With the SiteSetting disabled" do
|
||||
|
@ -247,6 +252,16 @@ describe Email::MessageBuilder do
|
|||
expect(build_args[:from]).to eq("The Forum <#{SiteSetting.notification_email}>")
|
||||
end
|
||||
|
||||
it "cleans up aliases in the from_alias arg" do
|
||||
builder = Email::MessageBuilder.new(to_address, from_alias: "Finn: the Dog <3", from: finn_email)
|
||||
builder.build_args[:from].should == "Finn the Dog 3 <#{finn_email}>"
|
||||
end
|
||||
|
||||
it "cleans up the email_site_title" do
|
||||
SiteSetting.stubs(:email_site_title).returns("::>>>Best Forum EU: Award Winning<<<")
|
||||
expect(build_args[:from]).to eq("Best Forum EU Award Winning <#{SiteSetting.notification_email}>")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue