Feature #34794 ยป 0001-Allow-newlines-and-quote-characters-within-mail-body.patch
| app/models/mail_handler.rb | ||
|---|---|---|
| 622 | 622 |
rescue RegexpError => e |
| 623 | 623 |
logger&.error "MailHandler: invalid regexp delimiter found in mail_handler_body_delimiters setting (#{e.message})"
|
| 624 | 624 |
end |
| 625 |
else |
|
| 626 |
# In a "normal" delimiter, allow a single space from the originally |
|
| 627 |
# defined delimiter to match: |
|
| 628 |
# * any space-like character, or |
|
| 629 |
# * line-breaks and optional quoting with arbitrary spacing around it |
|
| 630 |
# in the mail in order to allow line breaks of delimiters. |
|
| 631 |
delimiters = delimiters.map do |delimiter| |
|
| 632 |
delimiter = Regexp.escape(delimiter).encode!(Encoding::UTF_8) |
|
| 633 |
delimiter = delimiter.gsub(/(\\ )+/, '\p{Space}*(\p{Space}|[\r\n](\p{Space}|>)*)')
|
|
| 634 |
Regexp.new(delimiter) |
|
| 635 |
end |
|
| 625 | 636 |
end |
| 626 | 637 | |
| 627 | 638 |
unless delimiters.empty? |
| 628 |
regex = Regexp.new("^[> ]*(#{ Regexp.union(delimiters) })[[:blank:]]*[\r\n].*", Regexp::MULTILINE)
|
|
| 639 |
regex = Regexp.new("^(\\p{Space}|>)*(#{ Regexp.union(delimiters) })\\p{Space}*[\\r\\n].*", Regexp::MULTILINE)
|
|
| 629 | 640 |
body = body.gsub(regex, '') |
| 630 | 641 |
end |
| 631 | 642 |
body.strip |
| test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml | ||
|---|---|---|
| 33 | 33 |
malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse |
| 34 | 34 |
platea dictumst. |
| 35 | 35 | |
| 36 |
> --- Reply above. Do not remove this line. --- |
|
| 36 |
> --- Reply above. Do not |
|
| 37 |
> remove this line. --- |
|
| 37 | 38 |
> |
| 38 | 39 |
> Issue #6779 has been updated by Eric Davis. |
| 39 | 40 |
> |