Senden von Multipart / Alternative mit Mutt

12

Ich möchte, dass für bestimmte E-Mails und / oder Empfänger vor dem Senden ein Skript ausgeführt wird (automatisch oder durch Drücken einer Tastenkombination), das meine übernimmt text/plain, ein Skript darüber ausführt und dann die Ausgabe dieses Skripts mit dem text/htmlTyp verknüpft Setzen Sie die gesamte Nachricht auf multipart/alternative.

Side Ramble: Es könnte schön sein, wenn dies unmittelbar vor dem Senden automatisch passiert, aber nur, wenn der Body-Typ aktuell eingestellt ist text/markdown, da dies bedeuten würde, dass sich die ausstehende E-Mail nie in einem Zustand befindet, in dem ich die Quelle erneut bearbeite, aber vergesse, den HTML-Code neu zu generieren. und ich habe immer noch die Option nur zu senden text/plain. Dann hätte ich eine andere Bindung, um den Inhaltstyp des Körpers festzulegen text/markdown, damit dieser aufgegriffen wird. Aber dann habe ich auch das Problem, dass viele E-Mail-Clients (einschließlich Google Mail) das Rendern ablehnen text/markdown(auch nicht als einfacher Text) und es stattdessen als Download anbieten, sodass der Inhaltstyp des Quellteils zurückgeschaltet werden muss zu text/plain.

Ist so etwas mit Köter möglich?

Leider unterstützt Mutt, soweit ich das beurteilen kann, das Senden von multipart/alternativeNachrichten nicht und weigert sich, etwas anderes zu senden multipart/mixed, aber ich würde gerne zeigen, dass ich falsch liege.

Die beste Lösung, die ich finden konnte, ist dieses Makro:

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

Hier gibt es einige Probleme:

  • Es ersetzt vollständig den ursprünglichen Klartext, sodass die Bearbeitung dann viel schwieriger ist
  • Ich mag es nicht, dass ydas Makro im Dialogfeld Ja sagt und fragt, ob es in Ordnung ist, die Datei zu überschreiben
  • Ich muss die Eingabetaste drücken, nachdem dies ausgeführt wurde
  • Und natürlich die Hauptsache: Es wird keine Nur-Text-Alternative gesendet

Gibt es eine bessere Lösung?

Ich bin möglicherweise offen für einen anderen Mail-Client im Textmodus, solange dieser verfügbar ist

  • ist mit Google Apps verwendbar und synchronisiert Flags usw. in beide Richtungen
  • unterstützt GPG
  • hat vim-ähnliche Bindungen, oder ich kann sie konfigurieren
  • Lassen Sie mich vim als Nachrichteneditor verwenden
  • hat eine Thread-Nachrichtenansicht
  • ermöglicht es mir, E-Mails auf eine etwas ausgefeilte Weise zu filtern / zu durchsuchen (Absender, Empfänger, Vorhandensein von Anhängen, Betreff- und Texttext-Suche)
  • Behandelt Anhangstypen ein bisschen wie Köter, dh Mailcap oder gleichwertig, damit ich eingehende HTML-E-Mails über Luchs ausführen oder bei Bedarf etwas drücken kann, um sie im grafischen Browser zu öffnen. Ich kann Bildbetrachter per Knopfdruck starten und so weiter
tremby
quelle

Antworten:

1

Ich habe vergessen, dass NeoMutt Multipart unterstützt. https://neomutt.org/guide/mimesupport .

Davey
quelle
Das ist gut zu hören. Auf der von Ihnen verlinkten Seite heißt es, dass die Unterstützung für das Senden von mehrteiligen / alternativen Inhalten rudimentär ist, aber ich werde es bald versuchen. Vielen Dank für den Hinweis.
tremby
Neomutt soll ein Ersatz für den normalen alten Köter sein. Die andere schöne Sache ist, dass es anscheinend eine ziemlich große aktive Entwicklung hat.
Davey
Es sieht so aus, als ob die Funktion erst vor einem Jahr hinzugefügt wurde: github.com/neomutt/neomutt/pull/734
tremby
Es funktioniert großartig. Ich habe ein Makro erstellt, das dem in den Dokumenten ähnelt, die Sie unter neomutt.org/guide/… veröffentlicht haben. - Ich muss nach Verwendung des Makros immer noch die Eingabetaste drücken, und ich bin mir noch nicht sicher, was passieren wird, wenn ich es erstellen möchte Änderungen nach dem Generieren der Alternative, aber vor dem Senden, aber ich werde das alles zu gegebener Zeit herausfinden. Beachten Sie, dass die erste Version, die Multipart / Alternative unterstützt, die Version 2018-05-12 ist, die noch nicht in meiner Distribution enthalten ist. Ich habe aus der Quelle mit kompiliert --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
quelle
Sie scheinen die Frage zu beantworten, ob es möglich ist, unterschiedliche Signaturen pro E-Mail-Adresse zu verwenden. Dies ist überhaupt nicht die Frage, die ich gestellt habe. Ich sehe nicht, wie dies beim Senden von mehrteiligen / alternativen E-Mails hilft.
tremby
Ich sehe, Sie haben Ihre Antwort bearbeitet. OK, dies prüft, von welchen E-Mail-Adressen Sie senden und an welche (es sieht nicht so aus, als würden Sie etwas mit "von" tun) und fügt möglicherweise einige Header hinzu. Aber ich sehe immer noch nicht, wie dies beim Versenden von mehrteiligen / alternativen E-Mails hilft.
tremby
Sie müssen dies wahrscheinlich an Ihre eigenen Bedürfnisse anpassen, daher kann ich wahrscheinlich nicht alles für Sie buchstabieren. Die allgemeine Lösung besteht jedoch darin, dass Sie Ihren Editor auf ein Skript einstellen, das Ihren Editor aufruft und dann die Entwurfsdatei analysiert.
Davey
Welche spezifische Bearbeitung der Entwurfsdatei ermöglicht es mutt, mehrteilige / alternative zu senden? Wo sind die beiden Versionen der Datei, HTML und Klartext?
tremby
Sie scheinen eine Möglichkeit zu haben, mit Commonmark zu konvertieren. Ersetzen Sie dies durch die Zeile someMultipartScript. $ 1 an diesem Punkt ist Klartext. Senden Sie es dort über Ihr Konvertierungstool und leiten Sie es an denselben Dateinamen $ 1 weiter. Wenn dieses Skript beendet wird, sendet es ein Signal an das aufrufende Programm (mutt), dass Ihr Editor geschlossen ist und an diesem Punkt zum Senden bereit sein sollte.
Davey