我是 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/