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 |
> |