Wysyłanie wieloczęściowe / alternatywne z mutt

12

Chciałbym, aby w przypadku niektórych wiadomości e-mail i / lub adresatów skrypt był uruchamiany przed wysłaniem (automatycznie lub przez naciśnięcie klawisza), który pobiera mój text/plain, uruchamia nad nim skrypt, a następnie dołącza wynik tego skryptu z text/htmltypem , ustawiając całą wiadomość na multipart/alternative.

Boczne wędrowanie: fajnie by było, gdyby stało się to automatycznie bezpośrednio przed wysłaniem, ale tylko wtedy, gdy typ treści był aktualnie ustawiony na text/markdown, ponieważ oznaczałoby to, że oczekujący e-mail nigdy nie jest w stanie, w którym ponownie edytuję źródło, ale zapominam o ponownym wygenerowaniu HTML, i nadal mam opcję wysyłania tylko text/plain. Następnie miałbym inne powiązanie, aby ustawić typ zawartości treści text/markdown, aby można było to odczytać. Ale mam też problem polegający na tym, że wiele klientów poczty (w tym Gmail) odmawia renderowania text/markdown(nawet jako zwykły tekst), zamiast tego oferując je jako plik do pobrania, więc musiałbym zmienić typ zawartości części źródłowej do text/plain.

Czy to możliwe z kundlem?

Niestety, z tego co wiem, mutt nie obsługuje wysyłania multipart/alternativewiadomości, odmawiając wysłania czegokolwiek multipart/mixed, ale chciałbym pokazać, że się mylę.

Najlepsze rozwiązanie, jakie udało mi się wymyślić, to makro:

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

Jest z tym kilka problemów:

  • Całkowicie zastępuje oryginalny zwykły tekst, więc znacznie trudniej jest go edytować
  • Nie podoba mi się, że yw makrze jest napis „tak” w oknie dialogowym z pytaniem, czy nadpisanie pliku jest w porządku
  • Po tym uruchomieniu muszę nacisnąć klawisz Return
  • I oczywiście najważniejsze: nie wysyła alternatywy w postaci zwykłego tekstu

Czy jest lepsze rozwiązanie?

Potencjalnie jestem otwarty na innego klienta pocztowego w trybie tekstowym, o ile to możliwe

  • współpracuje z Google Apps i synchronizuje flagi itp. w obu kierunkach
  • obsługuje GPG
  • ma wiązania podobne do vima lub mogę je skonfigurować
  • pozwala mi używać vima jako edytora wiadomości
  • ma widok wiadomości z wątkami
  • pozwala mi filtrować / wyszukiwać pocztę w nieco wyrafinowany sposób (nadawca, odbiorca, obecność załączników, wyszukiwanie tematu i treści)
  • obsługuje typy załączników trochę jak mutt, tj. mailcap lub równoważny, dzięki czemu mogę uruchamiać przychodzącą pocztę HTML przez rysia, lub nacisnąć coś, aby otworzyć go w przeglądarce graficznej, jeśli zajdzie taka potrzeba, mogę uruchomić przeglądarkę obrazów po naciśnięciu przycisku i tak dalej
drżenie
źródło

Odpowiedzi:

1

Zapomniałem o NeoMutt obsługuje wieloczęściowe. https://neomutt.org/guide/mimesupport .

Davey
źródło
Dobrze to słyszeć. Strona, którą podlinkowałeś, powiedziała, że ​​obsługa wysyłania wieloczęściowego / alternatywnego jest szczątkowa, ale wkrótce spróbuję. Dzięki za zwrócenie na to uwagi.
tremby
Neomutt ma zastępować zwykłego kundla. Inną fajną rzeczą jest to, że najwyraźniej ma dość duży aktywny rozwój.
Davey,
Wygląda na to, że funkcja została dodana zaledwie rok temu: github.com/neomutt/neomutt/pull/734
tremby
Działa świetnie. Zrobiłem makro podobne do tego, które zasugerowałem w dokumentach opublikowanych na neomutt.org/guide/… - Po użyciu makra nadal muszę nacisnąć Enter i nie jestem jeszcze pewien, co się stanie, jeśli chcę to zrobić zmienia się po wygenerowaniu alternatywy, ale przed wysłaniem, ale wszystko to wyjaśnię we właściwym czasie. Zauważ, że pierwszą wersją obsługującą wieloczęściową / alternatywną wersję jest wydanie 2018-05-12, które nie jest jeszcze w mojej dystrybucji. Kompilowałem ze źródła z --gnutls --prefix/usr/local --tokyocabinet.
tremby
-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
Davey
źródło
Wygląda na to, że odpowiadasz na pytanie „czy można użyć różnych podpisów dla każdego z„ adresu e-mail ”, co wcale nie jest pytaniem, które zadałem. Nie rozumiem, jak to pomaga w wysyłaniu wieloczęściowych / alternatywnych wiadomości e-mail.
tremby
Widzę, że zredagowałeś swoją odpowiedź. OK, więc sprawdza, na które adresy e-mail wysyłasz i do których (nie wygląda na to, że robisz cokolwiek z „od”) i ewentualnie dodaje nagłówki. Ale nadal nie widzę, jak to pomaga w wysyłaniu wieloczęściowych / alternatywnych wiadomości.
tremby
Prawdopodobnie będziesz musiał dostosować to do własnych potrzeb, więc prawdopodobnie nie mogę przeliterować wszystkiego dla ciebie. Ale ogólnym rozwiązaniem jest ustawienie edytora na skrypt, który wywołuje edytor, a następnie analizuje plik roboczy.
Davey,
Która konkretna edycja pliku szkicu pozwoli muttowi wysłać wieloczęściową / alternatywną? Gdzie są dwie wersje pliku, HTML i zwykły tekst?
tremby
Wygląda na to, że masz sposób na konwersję ze znakiem zwykłym. Zamień to na linię someMultipartScript. 1 $ w tym momencie będzie tekstem jawnym. Wyślij go za pomocą narzędzia do konwersji i potokuj do tej samej nazwy pliku 1 $. Po zakończeniu tego skryptu wysyła sygnał do programu wywołującego (mutt), że edytor jest zamknięty, w którym momencie powinien być gotowy do wysłania.
Davey,