Надсилання багаточастинних / альтернативних з муттом


12

Мені б хотілося, щоб певні електронні листи та / або одержувачі виконували сценарій перед відправленням (будь то автоматично або натисканням клавіші), який приймає мій 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 Apps і синхронізує прапори тощо в обох напрямках
  • підтримує GPG
  • має vim-подібні прив’язки, або я можу їх налаштувати
  • дозволяє використовувати vim як редактор повідомлень
  • має перегляд потокового повідомлення
  • дозволяє мені фільтрувати / шукати пошту дещо складним способом (відправник, одержувач, наявність вкладених файлів, пошук теми та тексту тексту)
  • обробляє типи вкладень трохи як mutt, тобто mailcap або еквівалент, щоб я міг запускати вхідну HTML-пошту через рись або натискати щось, щоб відкрити її у графічному браузері, якщо потрібно, я можу запустити переглядач зображень натисканням кнопки тощо.

Відповіді:


1

Я забув про підтримку NeoMutt multipart. https://neomutt.org/guide/mimesupport .


Це добре чути. Сторінка, на яку ви пов’язали, сказала, що підтримка для надсилання мультичастин / альтернативи є рудиментарною, але я спробую скоріше спробувати. Дякуємо, що вказали на це.
тремтіння

Neomutt повинен бути заміною для звичайного ol 'mutt. Інша приємна річ - це те, що, очевидно, він отримав досить великий активний розвиток.
Дейві

Схоже, цю функцію додали лише рік тому: github.com/neomutt/neomutt/pull/734
тремті

Це чудово працює. Я створив макрос, подібний до запропонованого в документах, які ви опублікували на neomutt.org/guide/… - мені все одно потрібно натиснути клавішу Enter після використання макросу, і я ще не впевнений, що буде, якщо я хочу зробити зміни після створення альтернативи, але перед надсиланням, але я все це зрозумію вчасно. Зауважте, що перша версія, яка підтримує мультичастину / альтернативу, - це випуск 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.