artur
(Artur Lobanov)
5월 4, 2022, 4:39오후
1
이메일에 밑줄로 사용되는 하이픈이 포함된 경우, 마크다운이 이를 헤더로 인식하여 문제가 발생합니다. 이 내용은 트리밍 알고리즘에 의해 제거됩니다. 많은 사용자가 이메일만 사용하여 저희 인스턴스를 이용하므로, 항상 트리밍된 내용을 표시해야 합니다.
재현 방법:
기본적으로 고급 이메일 테스트에 다음을 입력합니다:
This is text before
Header
------
This is text after
마크다운으로 렌더링되면 다음과 같이 표시됩니다:
This is text before
Header
This is text after
그 결과, 헤더 앞의 텍스트는 제거되고 뒤의 텍스트는 생략됩니다!
같은 길이의 문자 수를 가진 줄 뒤에 오는 하이픈 줄을 생략하지 않도록 트리밍을 조정할 수 있는 방법이 있을까요? 마크다운은 적어도 이를 처리할 수 있는 것 같습니다.
–
저는
2.9.0.beta4
(14f61c5784 ) 버전을 사용 중입니다.
1개의 좋아요
Falco
(Falco)
5월 4, 2022, 4:40오후
2
설정 trim incoming emails을 비활성화해 보셨나요?
artur
(Artur Lobanov)
5월 4, 2022, 4:45오후
3
네, 물론입니다. 트리밍을 비활성화하면 다음 메시지가 생략되지 않죠
하지만 문제는 사람들이 이메일로 매우 긴 이메일 스레드에 회신할 때 발생합니다. 그러면 웹 뷰에 해당 스레드가 전부 표시되거든요. 이건 좋은 상황이 아닙니다. 그래서 저는 트리밍을 다시 활성화하고 싶습니다!
Falco
(Falco)
5월 4, 2022, 5:31오후
4
즉, 줄바꿈 제거 기능은 활성화하되 ----- 서명 제거 기능은 비활성화하자는 말씀이시군요. 쉽지 않은 문제입니다. 사용자에게 Setext 헤딩 대신 ATX 헤딩 을 사용하도록 안내할 수 있을까요?
2개의 좋아요
@artur이 언급한 이메일을 생성하는 애플리케이션의 리드 개발자로서 말씀드리면: 네, 변경할 수 있습니다(또는 "밑줄"에 ---- 대신 ^^^^를 사용할 수도 있지만), 이는 기술적으로 마크다운이 아니라 단순히 사람이 보기 좋게 포맷된 text/plain 이메일입니다. 그리고 개인적으로 마크다운 스타일의 # something 헤더를 사용하는 것보다 "밑줄"이 쳐진 헤더가 훨씬 보기 좋다고 생각합니다.
아무튼, --로 구분되는 이메일 서명은 보통 -- 줄 바로 위에 빈 줄이 있는 것 아닌가요? 그렇다면 이메일을 파싱할 때 이 점을 고려할 수 있지 않을까요?
2개의 좋아요
Falco
(Falco)
5월 5, 2022, 1:00오후
6
저는 여기에서 처리되고 있다고 생각합니다.
# frozen_string_literal: true
class DelimiterMatcher
DELIMITER_CHARACTERS = "-_,=+~#*ᐧ—"
DELIMITER_REGEX = /^[[:blank:]]*[#{Regexp.escape(DELIMITER_CHARACTERS)}]+[[:blank:]]*$/
# A single "-" or "*" on its own line (ignoring surrounding blanks) is the
# way many mail clients render a plain-text bullet list item, not a reply
# or signature separator. Real separators built from these characters use
# at least two of them ("--", "***", "-----"), so excluding the lone case
# avoids discarding bullet-list content while leaving genuine separators
# (and every other delimiter character) untouched.
BULLET_MARKER_REGEX = /\A[[:blank:]]*[-*][[:blank:]]*\z/
def self.match?(line)
return false if BULLET_MARKER_REGEX.match?(line)
line =~ DELIMITER_REGEX
end
This file has been truncated. show original
PR을 제안하고 싶으시다면 검토해 보겠습니다. 회귀가 매우 눈에 띄기 때문에 까다로운 영역입니다.
2개의 좋아요
artur
(Artur Lobanov)
5월 20, 2022, 1:45오후
7
문자 조합, 예: -=-=-=-= 를 사용해 테스트해 봤는데 제거되지 않습니다 제거됩니다.
분리자 목록에 없는 문자를 사용해야 할 것 같습니다…