这个问题已根据建议复制这个 在StackOverflow,只要是编程问题,但似乎依赖于Linux工具。我将在两个地方发布解决方案的链接(如果找到)。
我不太了解IMAP 邮件,因为我一直使用POP3。但删除电子邮件通过使用 Windows 电子邮件客户端中包含的工具,可以从 POP3 邮件服务器发送邮件,例如球棒!。
但现在我的工作有了新的IMAP 帐户有一个愚蠢的问题:有时来自我的域(部分)之外的电子邮件@myenterprise.com
不会到达,并且想要编写一些方法来检测它。
只是一个简单的外壳脚本(在脚本编写方面,Linux 对我来说是非常首选的)从外部帐户发送定期电子邮件并检查它们是否正确到达就足够了,但如果我安排它每小时运行一次......好吧,几天后我垃圾邮件中会有很多Subject:Test
电子邮件。因此,解决方案是在检查后从 IMAP 服务器中删除它们。
我怎么能够删除来自我的特定电子邮件IMAP服务器来自Linux外壳以可编写脚本的方式?
如果解决方案是特定的,则首选 Bash shell。
答案1
我会选择 Python 脚本。以下脚本请求 IMAP 服务器、用户名和密码以及主题字符串。然后,它列出主题包含给定主题字符串的所有邮件。
评论在行里imapserver.store(num, '+FLAGS', '\已删除')当你对行为感到满意时。然后,显示的邮件将被标记为删除。
#!/usr/bin/python3
import getpass
def del_imap(server, port, login, password, search):
import imaplib, email
# NOTE: According to RFC 1730 the SEARCH commands searches for 'messages that
# CONTAIN the specified string. When multiple keys are specified, the result
# is the intersection (AND function) of all the messages that match those
# keys.
# _search_command = '(FROM ' + search + ')'
# _search_command = '(SUBJECT "testmail" FROM ' + search + ')'
_search_command = '(SUBJECT ' + search + ')'
imapserver = imaplib.IMAP4_SSL(server, port)
imapserver.login(login, password)
imapserver.select()
typ, data = imapserver.search(None, _search_command)
for num in data[0].split():
typ, data = imapserver.fetch(num, '(RFC822.HEADER)')
print (data[0][1].decode())
# Uncomment the following line if the listed files should also be
# flagged for deletion
# imapserver.store(num, '+FLAGS', '\\Deleted')
imapserver.close()
imapserver.logout()
del_imap(input("IMAP Server: "), 993, input("Username: "), getpass.getpass(), input("Search: "))
我还创建了一个 Github-Gist,其中将进行进一步的改进:https://gist.github.com/jkirk/39dc64747a9d78accde49de2e8dbdc6d