在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
所以我 :
- 提供凭证
login
,password
[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
,以使mutt
call 成为外部命令。
该sed
命令将每个换行符 ( \n
) 替换为原义文本<enter>
。它使用该-z
选项,因此sed
需要 GNU。如果您没有 GNU sed,您可以使用perl
或awk
代替。
顺便说一句,我建议在邮箱的本地副本上进行测试(调整邮箱和文件夹挂钩线等以指向本地文件而不是 imap)。如果您手边没有任何本地邮件,请将 imap 邮箱中的部分或全部消息保存到本地 mbox 文件。
qy
另外,我会在文件夹挂钩行(或~/.muttrc.deletecmds
文件中) 没有最后一个的情况下进行测试。mutt
不会自动退出,所以你手动检查它是否在做确切地你想要什么,仅此而已。此外,您还可以通过键入%
然后退出来禁用将更改写入磁盘qy
,这样您就不必再次填充测试邮箱。
3.有更好的这样做的方法
mutt
确实不是适合这项工作的工具。
您是否考虑过这样做perl
,使用网络::IMAP::简单模块?或其中之一许多 其他模块 perl
用于处理 IMAP 和电子邮件(例如电子邮件::简单)?
如果你不喜欢perl
,python
这是一个很好的imaplib2
模块。