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


12

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

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

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

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

Ответы:


1

Я забыл про NeoMutt поддерживает multipart. https://neomutt.org/guide/mimesupport .


Приятно слышать. На странице, на которую вы ссылались, сказано, что поддержка отправки multipart / альтернатива является зачаточной, но я попробую ее в ближайшее время. Спасибо за указание на это.
дрожь

Предполагается, что Neomutt станет заменой обычного старого дурака. Другая приятная вещь заключается в том, что она, по-видимому, получила довольно активное развитие.
Дейви,

Похоже, что функция была добавлена ​​всего год назад: github.com/neomutt/neomutt/pull/734
tremby

Работает отлично. Я сделал макрос, похожий на тот, который был предложен в документах, которые вы разместили на neomutt.org/guide/… - Мне все еще нужно нажать Enter после использования макроса, и я пока не уверен, что произойдет, если я хочу сделать Изменения после генерации альтернативы, но перед отправкой, но я все выясню со временем. Обратите внимание, что первой версией, поддерживающей multipart / alternative, является выпуск 2018-05-12, которого пока нет в моем дистрибутиве. Я скомпилирован из источника с --gnutls --prefix/usr/local --tokyocabinet.
Тремби

-1
    #!/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

Похоже, вы отвечаете на вопрос «возможно ли использовать разные подписи для каждого» из «адреса электронной почты», что совсем не вопрос, который я задавал. Я не вижу, как это помогает с отправкой нескольких частей / альтернативной электронной почты.
дрожь

Я вижу, вы отредактировали свой ответ. ОК, поэтому он проверяет, с каких адресов электронной почты вы отправляете сообщения и с (не похоже, что вы что-то делаете с «от») и, возможно, добавляет некоторые заголовки. Но я до сих пор не понимаю, как это помогает при отправке составных / альтернативных писем.
Тремби

Вам, вероятно, нужно будет настроить это для своих собственных нужд, поэтому я, вероятно, не могу объяснить все для вас. Но общее решение состоит в том, что вы устанавливаете в своем редакторе скрипт, который вызывает ваш редактор, а затем анализирует черновой файл.
Дейви,

Какие конкретные изменения в черновом файле позволят Mutt отправлять несколько частей / альтернатив? Где две версии файла: HTML и обычный текст?
Тремби

Похоже, у вас есть способ конвертировать с помощью обычного знака. Замените это строкой someMultipartScript. 1 доллар в этот момент будет открытым текстом. Отправьте его через ваш конверсионный инструмент и отправьте по тому же имени $ 1. Когда этот скрипт завершается, он посылает сигнал вызывающей программе (mutt), что ваш редактор закрыт, и в этот момент он должен быть готов к отправке.
Дэйви
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.