Отправка multipart/ альтернатива с Mutt

Мне бы хотелось, чтобы для некоторых электронных писем и / или получателей был запущен скрипт перед отправкой (либо автоматически, либо путем нажатия клавиш), который берет мой text/plainзапускает над ним скрипт, а затем присоединяет вывод этого скрипта к text/html тип, устанавливая все сообщение в multipart/alternative,

Side ramble: было бы неплохо, если бы это происходило автоматически непосредственно перед отправкой, но только если тип телосложения в настоящее время установлен на 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 в макросе сказать "да" диалогу, спрашивающему, можно ли перезаписать файл
  • Я должен нажать клавишу возврата после этого запуска
  • И, конечно, главное: он не отправляет текстовую альтернативу

Есть ли лучшее решение?

Я потенциально открыт для другого почтового клиента в текстовом режиме, если он

  • можно использовать со Службами Google и синхронизировать флаги и т. д. в обоих направлениях
  • поддерживает GPG
  • имеет vim-подобные привязки, или я могу их настроить
  • позволяет мне использовать vim в качестве редактора сообщений
  • имеет потоковое представление сообщений
  • позволяет мне фильтровать / искать почту довольно сложным способом (отправитель, получатель, наличие вложений, поиск по теме и по тексту)
  • Обрабатывает типы вложений немного как Mutt, т.е. mailcap или эквивалентный, поэтому я могу запускать входящую HTML-почту через lynx или нажимать что-то, чтобы открыть ее в графическом браузере, если это необходимо, я могу запускать средства просмотра изображений при нажатии кнопки и т. д.

2 ответа

Решение

Я забыл про NeoMutt поддерживает multipart. 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
Другие вопросы по тегам