当前位置: 首页 > 面试题库 >

查找自上次使用python imaplib2检查以来添加到imap邮箱的新邮件?

邢修明
2023-03-14
问题内容

我正在尝试编写一个程序,该程序监视IMAP邮箱并自动将每个新收到的邮件复制到“存档”文件夹中。我正在使用实现IDLE命令的imaplib2。这是我的基本程序:

M = imaplib2.IMAP4("mail.me.com")
M.login(username,password)
lst = M.list()
assert lst[0]=='OK'
for mbx in lst[1]:
    print "Mailboxes:",mbx

def process(m):
    print "m=",m
    res = M.recent()
    print res


M.select('INBOX')
M.examine(mailbox='INBOX',callback=process)
while True:
    print "Calling idle..."
    M.idle()
    print "back from idle"
M.close()
M.logout()

当邮箱发生第一次更改时,它将正确打印邮箱并运行process()。但是last()的响应对我来说没有意义,并且在收到第一条消息后,我再也没有收到任何其他通知。

有人知道怎么做吗?


问题答案:

请参阅python-imap-idle-with-imaplib2中的示例和参考。该模块涉及线程,您应注意事件同步。

该示例建议与事件同步,并将邮件处理留给阅读器:

# The method that gets called when a new email arrives. 
# Replace it with something better.
def dosync(self):
    print "Got an event!"

从问题中暗示,“更好的东西”可以是:

# Replaced with something better.
def dosync(self):
    print "Got an event!"
    res = self.M.recent()
    print res


 类似资料:
  • 我们的平台定期检查我们的一些客户邮箱,寻找回复的电子邮件,到目前为止,它一直运行良好,但我们最近遇到了一个奇怪问题的客户。 当我连接到IMAP服务器并在给定的时间段内搜索电子邮件时(例如昨天的所有邮件),我只得到一个空列表。但是,当我在其邮箱上与客户核对时,我可以看到昨天收到的邮件。她的邮件客户端配置为使用POP,所以我要求她更改为IMAP,因为POP应该从邮件服务器中删除电子邮件。现在她正在使用

  • 问题内容: 我正在尝试阅读我的消息,我可以获取它来打印标题,但发件人和内容显示得很滑稽。这是我用来显示消息的代码: 输出如下: 为什么不打印出from语句的实际电子邮件地址?为什么不打印出实际的身体内容?(我只是在纯文本中很有趣。) 整个代码: 谢谢! 问题答案: 对于纯文本和html消息: 对于分段消息:

  • 现在,我想检查是否传入的电子邮件是重复的通过IMAP使用javamail,这可能意味着一个电子邮件等于其他邮件,他们有相同的主题,从,到,抄送,密件抄送,正文,附件。 谁能告诉我怎么做。任何想法都非常感谢。谢谢

  • 我目前正在iOS下开发一个EWS客户端应用程序,因此我使用Exchange Web服务与Exchange2010服务器通信(纯XML而不是托管API)。我知道如何访问委托的邮箱和日历,并授予或删除委托对邮箱的访问权限,但在访问之前,我需要先找到这些邮箱。也就是说,我想要找到我的当前用户有权访问的所有邮箱(与所有有权访问当前邮箱的用户相反,当前邮箱是有详细文档记录的)。 这个来自2011年的问题(E

  • 我正在尝试打开主邮箱的子邮箱,但它不起作用。我在调试模式下收到以下错误。 A5没有[不存在]未知邮箱:INBOX/[Gmail](失败)' 但是当我列出邮箱时,我可以看到[Gmail]框存在,所以我不明白出了什么问题。 这是创建错误的代码(我使用的是imap-Simple): 你能帮我一下吗?

  • 问题内容: 我有兴趣在收到来自具有特定主题的特定地址的电子邮件时触发某些操作。为了能够做到这一点,我需要对邮箱进行监视,检查每个传入的邮件(特别是我使用gmail)。最简单的方法是什么? 问题答案: Gmail提供了通过POP进行连接的功能,您可以在gmail设置面板中将其打开。Python可以使通过POP的连接非常容易: 您只需要将此脚本作为cron作业运行即可。不确定您使用的平台如何,YMMV