使用 Python 和 imaplib 我连接到 2 个 imap 服务器 (gmail) 并尝试使用日期时间匹配它们之间的电子邮件。
我有2个问题。
- 解析头部返回的日期不能直接用于搜索,格式错误。
- 我不清楚使用哪个 imap 搜索来按解析标头返回的日期和时间进行搜索。
我有 Oldmail 和 NewMail imap 连接。
NewMail.select("[Gmail]/All Mail", readonly=True)
OldMail.select("[Gmail]/All Mail")
只需选择一个随机电子邮件“6001”
typ, msg = NewMail.fetch('6001', '(BODY[HEADER])')
parser = HeaderParser()
pmsg = parser.parsestr(msg[0][1])
>>> pmsg['Date']
'Tue, 28 Dec 2010 21:56:00 -0700'
但这不是正确使用的格式,有一个简单的方法:-)
searchfor = '(ON "' + pmsg['Date'] + '")'
>>> searchfor
'(ON "Tue, 28 Dec 2010 21:56:00 -0700")'
OldMail.search(None, searchfor)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/imaplib.py", line 620, in search
typ, dat = self._simple_command(name, *criteria)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/imaplib.py", line 1060, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/imaplib.py", line 895, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
error: SEARCH command error: BAD ['Could not parse command']
我的目标是在使用谷歌迁移应用程序传输失败后在两台服务器之间找到匹配的电子邮件。如果他们已经转移,然后删除旧服务器上的电子邮件。如果你能提出一个更好的方法来做这件事,那也会很有帮助。