使用Python检查电子邮件

时间:2009-08-04 03:15:47

标签: python email

我有兴趣在收到特定电子邮件时触发某项操作 具体主题的地址。为了能够这样做,我需要实现 监控我的邮箱,检查每个收到的邮件(特别是我使用gmail)。 最简单的方法是什么?

6 个答案:

答案 0 :(得分:71)

Gmail提供了通过POP进行连接的功能,您可以在Gmail设置面板中启用该功能。 Python可以很容易地通过POP建立连接:

import poplib
from email import parser

pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('username')
pop_conn.pass_('password')
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
    print message['subject']
pop_conn.quit()

您只需要将此脚本作为cron作业运行。不知道你在YMMV上的平台是什么样的。

答案 1 :(得分:19)

Gmail为新电子邮件提供原子feed。您应该能够通过使用py cURL(或其他一些网络库)进行身份验证并下拉Feed来监控此情况。对每封新邮件发出GET请求应将其标记为已读,这样您就不必跟踪已阅读的电子邮件。

答案 2 :(得分:8)

虽然不是特定于Python的,但我总是喜欢procmail无论我在哪里安装它......!

只需使用您选择的条件| pathtoyourscript(垂直条AKA管道,然后是您希望在这些情况下执行的脚本)的某些操作行,并在您选择的条件下管理您的邮件,对于你选择的剧本,它可以做任何想做的事情 - 很难想到一种更通用的方法来“在收到满足你特定条件的邮件后触发你选择的行动!!当然没有限制您可以检查多少条件,单个条件可以触发多少个动作行(只需在{ }大括号中包含您想要的所有动作行)等等。

答案 3 :(得分:4)

人们似乎对Lamson充满了兴趣:

https://github.com/zedshaw/lamson

这是一个完全用Python编写的SMTP服务器。我相信你可以利用它来做你需要的一切 - 只需将gmail消息转发到该SMTP服务器,然后按照你的意愿行事。

但是,我认为上面的ATOM Feed建议可能最容易。

编辑:Lamson已被遗弃

答案 4 :(得分:1)

当我想要做同样的事情时(我的例子使用gmail),我找到了pretty good snippet。另请查看google search results

答案 5 :(得分:0)

我最近使用procmail和python

解决了这个问题

阅读procmail的文档。你可以告诉它在一个特殊的procmail配置文件

中将所有传入的电子邮件发送到这样的python脚本
:0:
| ./scripts/ppm_processor.py

Python提供了一个“电子邮件”包,可以执行您可能想要处理的任何电子邮件。阅读以下内容......

from email.generator import Generator
from email import Message
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.mime.multipart import MIMEMultipart