mutt로 multipart / alternative 보내기 특정 전자 메일 및 /

특정 전자 메일 및 / 또는 수신자가 (자동 또는 키 바인딩을 눌러) 보내기 전에 스크립트를 실행하여 내을 가져 와서 text/plain스크립트를 실행 한 다음 해당 스크립트의 출력을 text/html유형으로 첨부 하는 옵션을 원합니다 전체 메시지를로 설정합니다 multipart/alternative.

사이드 럼블 : 전송하기 직전에 자동으로 발생했지만 본문 유형이 현재로 설정된 경우에만 text/markdown보류중인 이메일이 소스를 다시 편집하지만 HTML 재생성을 잊어 버린 상태가 아님을 의미하므로, 그리고 난 여전히 보낼 옵션이 text/plain있습니다. 그런 다음 본문의 콘텐츠 유형을로 설정하는 또 다른 바인딩을 사용하여 text/markdown이것이 선택되도록합니다. 그러나 많은 메일 클라이언트 (Gmail 포함)가 렌더링을 거부하고 text/markdown(일반 텍스트로도) 다운로드로 제공하지 않으므로 소스 부분의 콘텐츠 유형을 다시 전환 해야하는 문제가 있습니다. 에 text/plain.

똥개로 그런 일이 가능합니까?

안타깝게도 mutt가 multipart/alternative메시지 보내기 를 지원하지 않고 아무것도 보내지 않는 것을 지원하지 않지만 multipart/mixed잘못되었다는 사실을 알고 싶습니다.

내가 생각해 낸 가장 좋은 해결책은 다음 매크로입니다.

macro compose M "<filter-entry>commonmark<return>y<edit-type><kill-line>text/html<return>" "convert message to HTML with Commonmark"

이것에는 몇 가지 문제가 있습니다.

  • 원본 일반 텍스트를 완전히 대체하므로 편집하기가 훨씬 어렵습니다.
  • y매크로에 파일을 덮어 쓸 수 있는지 묻는 대화 상자에 예라고 말하는 것이 마음에 들지 않습니다.
  • 이 실행 후 return 키를 눌러야합니다
  • 물론 중요한 것은 대체 텍스트를 보내지 않습니다.

더 나은 해결책이 있습니까?

잠재적으로 다른 텍스트 모드 메일 클라이언트에 열려있을 가능성이 있습니다.

  • Google Apps와 함께 사용할 수 있으며 양방향으로 플래그 등을 동기화합니다.
  • GPG 지원
  • vim과 같은 바인딩이 있거나 구성 할 수 있습니다.
  • vim을 메시지 편집기로 사용하겠습니다
  • 스레드 메시지보기가 있습니다
  • 다소 복잡한 방식으로 메일을 필터링 / 검색 할 수 있습니다 (발신자, 수신자, 첨부 파일 존재, 제목 및 본문 검색)
  • lynx를 통해 들어오는 HTML 메일을 실행하거나 필요한 경우 그래픽 브라우저에서 열려면 무언가를 누르십시오. 버튼을 누르면 이미지 뷰어를 시작할 수 있습니다.


답변

NeoMutt이 멀티 파트를 지원하는 것을 잊었습니다.
https://neomutt.org/guide/mimesupport .


답변

    #!/bin/bash

    cp $1 $1.tmp
    ##CHANGE OVERALL TYPE IN HEADER TO MULTIPART

    #HANDLE CONTENT-TYPE LINE IN HEADER
    if grep -q "Content-Type:" $1; then
            sed -i -e 's/Content-Type:.*?;/Content-Type: multipart\/alternative; boundary=boundary42/' $1.tmp
    else
            sed -i '1iContent-Type: multipart/alternative; boundary=boundary42' $1.tmp
    fi

    #EXTRACT HEADER AND BODY
    header="$(sed '/^$/q' $1.tmp)"
    body="$(sed -n -e '/^$/,$p' $1.tmp | tail -n +2)"

    #CREATE HTML VERSION
    HTMLbody="$(echo "$body" | commonmark)"

    #ADD HEADER
    echo "$header" > $1

    #START PLAIN TEXT
    echo -e "\n--boundary42\n" >> $1
    echo -e "Content-Type: text/plain; charset=us-ascii\n" >> $1
    echo "$body" >> $1

    #START HTML
    echo -e "\n--boundary42\n" >> $1
    echo "Content-Type: text/html; charset=UTF-8" >> $1
    echo "Content-Transfer-Encoding: quoted-printable\n" >> $1
    echo "$HTMLbody" >> $1

    echo -e "\n--boundary42--" >> $1

    msmtp $1