diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb
index 562c232443a..58a3acba122 100644
--- a/lib/email/receiver.rb
+++ b/lib/email/receiver.rb
@@ -194,7 +194,7 @@ module Email
end
markdown, elided_markdown = if html.present?
- markdown = HtmlToMarkdown.new(html).to_markdown
+ markdown = HtmlToMarkdown.new(html, keep_img_tags: true).to_markdown
markdown = trim_discourse_markers(markdown)
EmailReplyTrimmer.trim(markdown, true)
end
diff --git a/lib/html_to_markdown.rb b/lib/html_to_markdown.rb
index 2bc60f6015f..df8084ae4c1 100644
--- a/lib/html_to_markdown.rb
+++ b/lib/html_to_markdown.rb
@@ -6,7 +6,8 @@ class HtmlToMarkdown
def initialize(name, head="", body="", opened=false, markdown=""); super; end
end
- def initialize(html)
+ def initialize(html, opts={})
+ @opts = opts || {}
@doc = Nokogiri::HTML(html)
remove_whitespaces!
end
@@ -133,8 +134,12 @@ class HtmlToMarkdown
end
def visit_img(node)
- title = node["alt"].presence || node["title"].presence
- @stack[-1].markdown << ""
+ if @opts[:keep_img_tags]
+ @stack[-1].markdown << node.to_html
+ else
+ title = node["alt"].presence || node["title"].presence
+ @stack[-1].markdown << ""
+ end
end
def visit_a(node)
diff --git a/spec/components/html_to_markdown_spec.rb b/spec/components/html_to_markdown_spec.rb
index 15af2dcef34..f2344e58392 100644
--- a/spec/components/html_to_markdown_spec.rb
+++ b/spec/components/html_to_markdown_spec.rb
@@ -31,8 +31,14 @@ describe HtmlToMarkdown do
expect(html_to_markdown(%Q{Discourse})).to eq("[Discourse](https://www.discourse.org)")
end
+ HTML_WITH_IMG ||= %Q{
}
+
it "converts
" do
- expect(html_to_markdown(%Q{
})).to eq("")
+ expect(html_to_markdown(HTML_WITH_IMG)).to eq("")
+ end
+
+ it "keeps
with 'keep_img_tags'" do
+ expect(HtmlToMarkdown.new(HTML_WITH_IMG, keep_img_tags: true).to_markdown).to eq(HTML_WITH_IMG)
end
(1..6).each do |n|