1. 认证

1. 认证

mutt我执行以下步骤序列:

$ mutt -f imaps://imap.example.com
username
password
[shift]+[D]
~C [email protected]
[shift]+[D]
~C [email protected]
(...)
[shift]+[D]
~C [email protected]

[shift]+[U]
~d<91d
q
y

所以我 :

  • 提供凭证loginpassword
  • [shift]+[D] ~C mailinglist@domain选择删除邮件列表1,2...
  • [shift]+[U] ~d<91d但取消选择所有小于 91 天的
  • q选择退出
  • y并确认删除消息

如何实现自动化? (将其作为脚本)

mutt -e ...

参考:

答案1

1. 认证

您可以在 URI 中指定用户名,并使用配置设置imaps://指定密码。imap_pass

如果您不想将这些设置放入 default 中~/.muttrc,则可以创建一个别名或 shell 脚本包装器来mutt使用这些设置运行。例如

$ alias muttexample="mutt -f 'imaps://[email protected]/' 
                          -e 'set imap_pass=PASSWORD'"
$ muttexample

(添加换行和缩进只是为了提高可读性)

如果您非常谨慎并且不希望在命令行上使用密码(使用ps或 通过查看可以轻松看到密码/proc),那么您可以创建一个名为的文件,例如,~/.muttrc.extra包含以下两行:

source ~/.muttrc
set imap_pass=PASSWORD

请记住运行chmod 600 ~/.muttrc.extra以使其只有您可读。

然后将您的别名设置为:

$ alias muttexample="mutt -f 'imaps://[email protected]/' 
                          -F ~/.muttrc.extra"

2. 自动删除

现在身份验证已经解决,自动删除消息的最简单方法可能是使用~/.muttrc.extra.

source ~/.muttrc
set imap_pass=PASSWORD

folder-hook imaps://[email protected]/ push '[email protected]<enter>[email protected]<enter>[email protected]<enter>U~d<91d<enter>qy'

您可能需要优化imaps://文件夹挂钩中的 URI - 我自己不使用 imap,所以我不知道USERNAME@文件夹挂钩中是否需要该部分。

如果该文件夹挂钩行变得太长且复杂而无法编辑或理解,您可以将命令保存在~/.muttrc.deletecmds

[email protected]
[email protected]
[email protected]
U~d<91d
qy

然后将其用于您的文件夹挂钩:

folder-hook imaps://[email protected]/ push `sed -z 's/\n/\<enter\>/g' ~/.muttrc.deletecmds`

请注意,我们这次使用反引号而不是单引号~/.muttrc.extra,以使muttcall 成为外部命令。

sed命令将每个换行符 ( \n) 替换为原义文本<enter>。它使用该-z选项,因此sed需要 GNU。如果您没有 GNU sed,您可以使用perlawk代替。

顺便说一句,我建议在邮箱的本地副本上进行测试(调整邮箱和文件夹挂钩线等以指向本地文件而不是 imap)。如果您手边没有任何本地邮件,请将 imap 邮箱中的部分或全部消息保存到本地 mbox 文件。

qy另外,我会在文件夹挂钩行(或~/.muttrc.deletecmds文件中) 没有最后一个的情况下进行测试。mutt不会自动退出,所以你手动检查它是否在做确切地你想要什么,仅此而已。此外,您还可以通过键入%然后退出来禁用将更改写入磁盘qy,这样您就不必再次填充测试邮箱。


3.有更好的这样做的方法

mutt确实不是适合这项工作的工具。

您是否考虑过这样做perl,使用网络::IMAP::简单模块?或其中之一许多 其他模块 perl用于处理 IMAP 和电子邮件(例如电子邮件::简单)?

如果你不喜欢perlpython这是一个很好的imaplib2模块。

相关内容