python - 如何用 Python 编写一个简单的电子邮件监听器

标签 python python-2.7 email smtp imap

我是 Python (v2.7) 的新手,我需要编写一个连续运行的简单程序,监听一个 gmail 帐户并在该帐户收到电子邮件时调用一个函数。到目前为止,使用 Python 的内置 IMAP 或 SMTP 库似乎是最好的选择,但我对它们不是很熟悉,更不用说 Python 本身了。

到目前为止,我的想法是能够连接到电子邮件并通过 IMAP4 找到最新的电子邮件,但它缺少一种持续检查是否收到新电子邮件的方法:

( Source )

import imaplib
import email

#logs in to the desired account and navigates to the inbox
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('email@gmail.com','password')
mail.list()
mail.select('inbox')

result, data = mail.search(None,'ALL')

#retrieves the latest (newest) email by sequential ID
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]

任何关于如何调整它以持续运行和检查新传入消息的帮助都会很棒。谢谢!

最佳答案

使用threading 模块和子类threading.Thread。可在此处找到文档:https://docs.python.org/2/library/threading.html

import threading
import time

class MailThread(threading.Thread):

然后您的代码进入 run(),您必须在其中添加一些延迟。假设 1000 秒。

def run():
    #your code here
    time.sleep(1000)

脚本的最后一部分如下所示

if __name__ == '__main__': 
    mail_thread = MailThread()
    mail_thread.start()
    # do other stuff

只需使用 while(True) 循环和 time.sleep() 并在收到邮件后使用 break

关于python - 如何用 Python 编写一个简单的电子邮件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41517142/

相关文章:

python - 为什么我的简单 __eq__ 实现给出了 AssertionError?

python - 如何找到 html 提交按钮后面的 url?

python - 将异步生成器转换为同步生成器

Python 金融知识词典

html - Outlook 2003 剥离文本装饰 - HTML 电子邮件

Python记录器,相对时间(relativeCreated),引用可以重置吗?

python - Reportlab 中的 Pandas DataFrames

python - MongoKit "ImportError: No module named objectid "错误

ruby-on-rails - 如何测试向两个收件人发送电子邮件(Rspec)

android - 通过电子邮件发送 db 文件 Android