在mutt我执行以下步骤序列:
$ mutt -f imaps://imap.example.com
username
password
[shift]+[D]
~C mailinglist1@domain.com
[shift]+[D]
~C mailinglist2@domain.com
(...)
[shift]+[D]
~C mailinglistN@domain.com
[shift]+[U]
~d<91d
q
y
Run Code Online (Sandbox Code Playgroud)
所以我 :
login,password[shift]+[D] ~C mailinglist@domain选择删除邮件列表1 , 2 ... N[shift]+[U] ~d<91d 但取消选择所有小于 91d 的旧q 选择退出y 并确认删除消息如何自动化?(把它变成一个脚本)
mutt -e ...
Run Code Online (Sandbox Code Playgroud)
参考:
您可以在 URI 中指定用户名imaps://,并使用配置设置指定密码imap_pass。
如果您不想将这些设置放入 default 中~/.muttrc,则可以创建一个别名或 shell 脚本包装器来使用mutt这些设置运行。例如
$ alias muttexample="mutt -f 'imaps://USERNAME@imap.example.com/'
-e 'set imap_pass=PASSWORD'"
$ muttexample
Run Code Online (Sandbox Code Playgroud)
(添加换行和缩进只是为了提高可读性)
如果您非常谨慎并且不希望在命令行上使用密码(使用ps或 通过查看可以轻松看到/proc密码),那么您可以创建一个名为的文件,例如,~/.muttrc.extra包含以下两行:
source ~/.muttrc
set imap_pass=PASSWORD
Run Code Online (Sandbox Code Playgroud)
请记住运行chmod 600 ~/.muttrc.extra以使其只有您可读。
然后将您的别名设置为:
$ alias muttexample="mutt -f 'imaps://USERNAME@imap.example.com/'
-F ~/.muttrc.extra"
Run Code Online (Sandbox Code Playgroud)
现在身份验证已经解决,自动删除消息的最简单方法可能是使用~/.muttrc.extra.
source ~/.muttrc
set imap_pass=PASSWORD
folder-hook imaps://USERNAME@imap.example.com/ push 'D~Cmailinglist1@domain.com<enter>D~Cmailinglist2@domain.com<enter>D~CmailinglistN@domain.com<enter>U~d<91d<enter>qy'
Run Code Online (Sandbox Code Playgroud)
您可能需要优化imaps://文件夹挂钩中的 URI - 我自己不使用 imap,所以我不知道USERNAME@文件夹挂钩中是否需要该部分。
如果该文件夹挂钩行变得太长且复杂而无法编辑或理解,您可以将命令保存在~/.muttrc.deletecmds:
D~Cmailinglist1@domain.com
D~Cmailinglist2@domain.com
D~CmailinglistN@domain.com
U~d<91d
qy
Run Code Online (Sandbox Code Playgroud)
然后将其用于您的文件夹挂钩:
folder-hook imaps://USERNAME@imap.example.com/ push `sed -z 's/\n/\<enter\>/g' ~/.muttrc.deletecmds`
Run Code Online (Sandbox Code Playgroud)
请注意,我们这次使用反引号而不是单引号~/.muttrc.extra,以使muttcall 成为外部命令。
该sed命令将每个换行符 ( \n) 替换为原义文本<enter>。它使用该-z选项,因此sed需要 GNU。如果您没有 GNU sed,您可以使用perl或awk代替。
顺便说一句,我建议在邮箱的本地副本上进行测试(调整邮箱和文件夹挂钩线等以指向本地文件而不是 imap)。如果您手边没有任何本地邮件,请将 imap 邮箱中的部分或全部消息保存到本地 mbox 文件。
另外,我会qy在文件夹挂钩行(或文件中~/.muttrc.deletecmds)没有最后一个的情况下进行测试。 mutt不会自动退出,因此您需要手动检查它是否完全按照您的要求进行操作,仅此而已。%此外,您还可以通过键入然后退出来禁用将更改写入磁盘qy,这样您就不必再次填充测试邮箱。
mutt确实不是适合这项工作的工具。
您是否考虑过perl使用Net::IMAP::Simple模块来执行此操作?或者许多 其他模块 之一perl用于处理 IMAP 和电子邮件(例如Email::Simple)?
如果你不喜欢perl,python这是一个很好的imaplib2模块。
| 归档时间: |
|
| 查看次数: |
2738 次 |
| 最近记录: |