mutt - 过滤这样的消息

Mei*_*ham 6 mutt

我想复制 GMail 的“过滤此类邮件”功能。基本上,我希望在 mutt 中绑定一个键,例如 *,并且可以将显示的消息“限制”到由同一发件人(或以 ; 为前缀的发件人)发送的消息

macro index * "<enter-command>set sender=display-address<enter><limit>$sender<enter>" "Filter Messages Like"
Run Code Online (Sandbox Code Playgroud)

我正在尝试上面的宏方法,但是很难将发件人地址读入 mutt 中的变量。宏是去这里的正确方法吗?将消息头读入变量的正确方法是什么?

Jak*_*dra 3

不幸的是,不可能从函数填充变量。即使您能够调用 function <display-address> :push @:exec display-address或者在 neomutt \xe2\x80\x93 中使用 lua ,它也会显示在底部栏中,但变量仍为空。

\n\n

今天在 #neomutt IRC 上咨询此问题后,目前最好的选择是使用临时文件。

\n\n
    \n
  • 该宏将消息通过管道传输到 formail,后者返回from header,将其传递给 awk 以仅获取电子邮件地址并将输出重定向到 /tmp/sender
  • \n
  • 使用 /tmp/sender 的内容设置变量 $my_sender
  • \n
  • 使用 $my_sender 限制索引
  • \n
\n\n
macro index,pager * \\\n"<pipe-message>formail -X from:|awk -F\'[<>]\' \'{print $2}\'>/tmp/sender<enter>\\\n:set my_sender=\\"`cat /tmp/sender`\\"\\n\\\nl~f \\"$my_sender\\"\\n" \\\n"Filter Messages Like"\n
Run Code Online (Sandbox Code Playgroud)\n\n

要求: 邮件

\n\n

或者您可以使用任何其他命令来解析消息中的电子邮件地址。

\n\n
\n\n

编辑:每个 neomutt 会话仅工作一次。宏内部的变量扩展可能存在问题,因为它用双引号引起来,并且必须如此。所以这仍然可能是不可能的,至少是不可能的。

\n