mutt - Filtern Sie Nachrichten wie diese

mutt - Filtern Sie Nachrichten wie diese

Ich möchte die Funktion „Nachrichten wie diese filtern“ von GMail nachbilden. Im Grunde hoffe ich, einen Schlüssel in Mutt zu binden, wie z. B. *, und damit die angezeigten Nachrichten auf diejenigen „beschränken“ zu können, die vom gleichen Absender gesendet wurden (oder Absender, wenn sie mit ; ​​beginnen).

macro index * "<enter-command>set sender=display-address<enter><limit>$sender<enter>" "Filter Messages Like"

Ich versuche den oben beschriebenen Makroansatz, habe aber Probleme, die Absenderadresse in eine Variable in Mutt einzulesen. Ist Makro hier der richtige Weg? Und wie liest man Nachrichtenkopfzeilen richtig in Variablen ein?

Antwort1

<display-address> :push @Leider ist es nicht möglich, eine Variable aus einer Funktion zu füllen. Selbst wenn Sie die Funktion aufrufen oder Lua in Neomutt verwenden können :exec display-address, wird sie in der unteren Leiste angezeigt, aber die Variable bleibt leer.

Nachdem ich dieses Problem heute im #neomutt IRC besprochen habe, ist die Verwendung einer temporären Datei im Moment die beste Option.

  • Dieses Makro leitet die Nachricht an formail weiter, das die zurückgibt from header, sie an awk weiterleitet, um nur die E-Mail-Adresse zu erhalten, und die Ausgabe an /tmp/sender umleitet.
  • setze Variable $my_sender mit Inhalt von /tmp/sender
  • Index mit dem Wert $my_sender begrenzen
macro index,pager * \
"<pipe-message>formail -X from:|awk -F'[<>]' '{print $2}'>/tmp/sender<enter>\
:set my_sender=\"`cat /tmp/sender`\"\n\
l~f \"$my_sender\"\n" \
"Filter Messages Like"

Voraussetzungen: formail

oder Sie können einen beliebigen anderen Befehl verwenden, um die E-Mail-Adresse aus der Nachricht zu analysieren.


BEARBEITEN: funktioniert nur einmal pro Neomutt-Sitzung. Es gibt wahrscheinlich ein Problem mit der Variablenerweiterung innerhalb des Makros, da es in Anführungszeichen steht und so sein muss. Es ist also wahrscheinlich immer noch nicht möglich, zumindest nicht einfach.

Antwort2

Diese Antwort basiert aufJakub Jindra's Antwort. Leider hatte ich nicht genug Ansehen, um es als Kommentar zu seiner richtigen Antwort zu posten, aber ich dachte, das könnte anderen helfen, die auf das gleiche Problem stoßen.

Dies ist ein Workaround für sein Makro, der das Problem der einmaligen Erweiterung beheben kann:

macro index,pager k "<pipe-message>formail -X from:|awk -F'[<>]' '{print \"set my_tmp_pipe_decode=\\\"\"$2\"\\\"\" }'>/tmp/sender<enter>:source /tmp/sender<enter>l~f $my_tmp_pipe_decode<enter>" "Filter Messages Like"

Der Hauptunterschied besteht darin , dass catich versucht habe, die Datei zu öffnen, anstatt sie zu öffnen source. Auf diese Weise haben Sie das Problem der Variablenerweiterung nicht und es funktioniert in einer Sitzung so oft Sie möchten. Offensichtlich handelt es sich sourceim Vergleich dazu nicht um eine einmalige Erweiterung, catda es sich um einen internen Mutt-Befehl handelt, cates sich jedoch um einen externen Bash-Befehl handelt, der erweitert werden sollte.

Auch hier gebührt der Verdienst Jakub Jindra.

verwandte Informationen