我使用 Mutt 作为电子邮件客户端,并将 Vim 配置为编辑器。有时,我想发送一封包含空邮件正文的电子邮件(通常发给我自己),例如,邮件包含主题线和附件。
在撰写此类电子邮件时,我输入主题行和收件人地址,然后 Vim 会打开,让我编辑邮件正文。我必须在保存和关闭临时文件之前输入一些空格。如果我直接退出 Vim 而不输入任何文本(使用:q
或:x
命令),我会收到以下错误消息并返回到邮箱文件夹索引。
中止未修改的消息。
我知道我可以使用命令行发送这样的消息:
echo | mutt -s "Subject Line" -a attachment.zip [email protected]
但是,我希望能够在交互使用 Mutt 时执行此操作。是否有可以设置为允许空消息正文的配置变量?
我查看了 Mutt 网站上的文档,并使用 DuckDuckGo 和 Google 搜索短语“中止未修改的消息”,但所有结果似乎都与未editor
正确设置变量的用户有关。
答案1
只需将此行添加到您的.muttrc
文件中
set abort_unmodified = no
记录在man muttrc
和在线手册:
如果设置为是的,如果文件没有发生任何更改,则在编辑邮件正文后,撰写将自动中止(此检查仅在第一的文件的编辑)。当设置为不,创作将永远不会中止。
答案2
Mutt 在启动 Vim 之前会记录临时邮件正文文件的修改时间,然后在 Vim 退出后再次检查。如果修改时间没有改变,Mutt 就不会发送电子邮件消息并发出Aborted unmodified message
。
避免这种情况的一个简单方法是在:w
关闭 Vim 之前简单地写入空缓冲区。
答案3
您可以$editor
在这里利用自己的优势。
首先,编写一个小脚本,查找一些特定内容,表明这应该是一封空正文的电子邮件。例如,您可以将一些特殊字符作为主题字段值的第一个字符。
如果脚本没有检测到该指示器,那么它应该正常启动你的常规编辑器。
如果它做检测该指示器,但它应该读取touch
消息文件(作为$editor
调用中的第一个参数给出)并返回。您可能还想让它删除该指示器,这样如果您点击e
编辑,就会得到常规编辑器。
formail
它可以与您选择的文本处理器(awk、sed 等)组合在一起。
将 Mutt 设置$editor
为调用该脚本而不是vim
。