mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-27 09:36:19 -05:00
Add Site Setting to use HTML from incoming email when available. (#4236)
This commit is contained in:
parent
a53b6d1d1b
commit
a92fd9d701
4 changed files with 29 additions and 9 deletions
|
@ -1166,6 +1166,7 @@ en:
|
|||
|
||||
reply_by_email_enabled: "Enable replying to topics via email."
|
||||
reply_by_email_address: "Template for reply by email incoming email address, for example: %{reply_key}@reply.example.com or replies+%{reply_key}@example.com"
|
||||
incoming_email_prefer_html: "Use the HTML instead of the text for incoming email. May cause unexcpeted formatting issues!"
|
||||
|
||||
disable_emails: "Prevent Discourse from sending any kind of emails"
|
||||
|
||||
|
|
|
@ -544,6 +544,8 @@ email:
|
|||
pop3_polling_username: ''
|
||||
pop3_polling_password: ''
|
||||
log_mail_processing_failures: false
|
||||
incoming_email_prefer_html:
|
||||
default: false
|
||||
email_in:
|
||||
default: false
|
||||
client: true
|
||||
|
|
|
@ -212,16 +212,21 @@ module Email
|
|||
text = fix_charset(@mail)
|
||||
end
|
||||
|
||||
# prefer text over html
|
||||
text = trim_discourse_markers(text) if text.present?
|
||||
text, elided = EmailReplyTrimmer.trim(text, true) if text.present?
|
||||
return [text, elided] if text.present?
|
||||
use_html = html.present? && (!text.present? || SiteSetting.incoming_email_prefer_html)
|
||||
use_text = text.present? unless use_html
|
||||
|
||||
# clean the html if that's all we've got
|
||||
html = Email::HtmlCleaner.new(html).output_html if html.present?
|
||||
html = trim_discourse_markers(html) if html.present?
|
||||
html, elided = EmailReplyTrimmer.trim(html, true) if html.present?
|
||||
return [html, elided] if html.present?
|
||||
if use_text
|
||||
text = trim_discourse_markers(text)
|
||||
text, elided = EmailReplyTrimmer.trim(text, true)
|
||||
return [text, elided]
|
||||
end
|
||||
|
||||
if use_html
|
||||
html = Email::HtmlCleaner.new(html).output_html
|
||||
html = trim_discourse_markers(html)
|
||||
html, elided = EmailReplyTrimmer.trim(html, true)
|
||||
return [html, elided]
|
||||
end
|
||||
end
|
||||
|
||||
def fix_charset(mail_part)
|
||||
|
|
|
@ -171,6 +171,18 @@ describe Email::Receiver do
|
|||
expect(topic.posts.last.raw).to eq("This is the *text* part.")
|
||||
end
|
||||
|
||||
it "prefers html over text when site setting is enabled" do
|
||||
SiteSetting.incoming_email_prefer_html = true
|
||||
expect { process(:text_and_html_reply) }.to change { topic.posts.count }
|
||||
expect(topic.posts.last.raw).to eq('This is the <b>html</b> part.')
|
||||
end
|
||||
|
||||
it "uses text when prefer_html site setting is enabled but no html is available" do
|
||||
SiteSetting.incoming_email_prefer_html = true
|
||||
expect { process(:text_reply) }.to change { topic.posts.count }
|
||||
expect(topic.posts.last.raw).to eq("This is a text reply :)")
|
||||
end
|
||||
|
||||
it "removes the 'on <date>, <contact> wrote' quoting line" do
|
||||
expect { process(:on_date_contact_wrote) }.to change { topic.posts.count }
|
||||
expect(topic.posts.last.raw).to eq("This is the actual reply.")
|
||||
|
|
Loading…
Reference in a new issue