diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-11-18 17:15:56 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-11-18 17:15:56 +0000 |
commit | 2717675fbc10c97904e6a3eebf498d2c53fe5ce5 (patch) | |
tree | 098245239581426ea1a1a917eed62bdb784905ff /spec/lib | |
parent | 88479f7f3071c2d79447896deeea63fb78b175df (diff) | |
parent | e1b868307169b562a595b5cb41bda7e8b984600f (diff) | |
download | gitlab-ce-2717675fbc10c97904e6a3eebf498d2c53fe5ce5.tar.gz |
Merge branch 'bugfix/html-only-mail' into 'master'
add parsing support for incoming html email
## What does this MR do?
Fixes #18388 by adding support for parsing HTML email
## Are there points in the code the reviewer needs to double check?
The new class, Gitlab::Email::HTMLParser, which needs to translate the HTML content to text and also delete replies, as they are not necessarily in the correct format to be caught by EmailReplyParser. The solution I found that should work for any HTML-formatted email is to remove all `<table>` and `<blockquote>` tags. Actual `<table>` elements (to be interpreted by markdown) should already be encoded with e.g. `<table>` - the only failure mode is if there is an *actual* HTML table in the content itself, which we wouldn't be able to support easily anyways.
The gem `html2text` traverses the HTML tree and outputs text - and markdown in the case of HTML links or images.
See merge request !7397
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/email/reply_parser_spec.rb | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/spec/lib/gitlab/email/reply_parser_spec.rb b/spec/lib/gitlab/email/reply_parser_spec.rb index 6f8e9a4be64..c7a0139d32a 100644 --- a/spec/lib/gitlab/email/reply_parser_spec.rb +++ b/spec/lib/gitlab/email/reply_parser_spec.rb @@ -206,5 +206,9 @@ describe Gitlab::Email::ReplyParser, lib: true do it "properly renders email reply from MS Outlook client" do expect(test_parse_body(fixture_file("emails/outlook.eml"))).to eq("Microsoft Outlook 2010") end + + it "properly renders html-only email from MS Outlook" do + expect(test_parse_body(fixture_file("emails/outlook_html.eml"))).to eq("Microsoft Outlook 2010") + end end end |