Mutt

mutt - 過濾這樣的消息

  • May 11, 2020

我想複製 GMail 的“過濾此類郵件”功能。基本上,我希望在 mutt 中綁定一個鍵,例如 *,並且可以將顯示的消息“限制”到由同一發件人發送的那些消息(或者如果以;為前綴的發件人)

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

我正在嘗試上面的宏方法,但努力將發件人地址讀入 mutt 中的變數。宏是正確的方法嗎?將消息頭讀入變數的正確方法是什麼?

不幸的是,不可能從函式中填充變數。即使你能夠呼叫 function <display-address> :push @:exec display-address或者在 neomutt 中使用 lua - 它也會顯示在底部欄中,但變數保持為空。

今天在#neomutt IRC 上諮詢了這個問題後,現在最好的選擇是使用臨時文件。

  • 此宏將通過管道將消息傳遞給返回 的 formail,將其from header傳遞給 awk 以僅獲取電子郵件地址並將輸出重定向到 /tmp/sender
  • 使用 /tmp/sender 的內容設置變數 $my_sender
  • 使用 $my_sender 限制索引
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"

要求:郵箱

或者您可以使用任何其他命令從郵件中解析電子郵件地址。


編輯:每個 neomutt 會話僅工作一次。宏內部的變數擴展可能存在問題,因為它在雙引號中並且必須是這種方式。所以這仍然可能是不可能的,至少很容易。

引用自:https://unix.stackexchange.com/questions/365969