【发布时间】:2010-11-16 13:41:36
【问题描述】:
我有兴趣在收到来自特定的电子邮件时触发特定操作 带有特定主题的地址。为了能够做到这一点,我需要实施 监控我的邮箱,检查每封收到的邮件(特别是,我使用 gmail)。 最简单的方法是什么?
【问题讨论】:
我有兴趣在收到来自特定的电子邮件时触发特定操作 带有特定主题的地址。为了能够做到这一点,我需要实施 监控我的邮箱,检查每封收到的邮件(特别是,我使用 gmail)。 最简单的方法是什么?
【问题讨论】:
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 是如何完成的。
【讨论】:
error_proto: b'-ERR [AUTH] Web login required: https://support.google.com/mail/answer/78754'
Gmail 为新电子邮件提供了一个原子feed。您应该能够通过使用 py cURL(或其他一些网络库)进行身份验证并拉下提要来监控这一点。为每封新邮件发出 GET 请求应将其标记为已读,这样您就不必跟踪您已阅读的电子邮件。
【讨论】:
虽然不是特定于 Python 的,但我一直很喜欢 procmail 任何可以安装它的地方...!
只需将| pathtoyourscript 用作您选择的条件的一些操作行(竖线AKA 管道后跟您要在这些情况下执行的脚本),您的邮件就会在您选择的条件下通过管道传输到您选择的脚本,让它为所欲为 - 很难想到更通用的方法来“在收到满足您特定条件的邮件时触发您选择的操作!当然有多少没有限制您可以检查的条件,单个条件可以触发多少条操作线(只需将您想要的所有操作线括在 { } 大括号中)等等。
【讨论】:
| pathtoyourscript 并且您可以启动您选择的脚本并在满足您最喜欢的条件时将您的邮件发送给它,并且脚本可以做任何它想做的事情——这怎么不是“触发动作”?!
人们似乎对 Lamson 很感兴趣:
https://github.com/zedshaw/lamson
这是一个完全用 Python 编写的 SMTP 服务器。我相信你可以利用它来做你需要的一切——只需将 gmail 邮件转发到那个 SMTP 服务器,然后做你想做的事。
但是,我认为执行上面的 ATOM 提要建议可能是最简单的。
编辑:Lamson 已被遗弃
【讨论】:
当我想做同样的事情时,我找到了pretty good snippet(并且示例使用了 gmail)。另请查看google search results。
【讨论】:
我最近使用 procmail 和 python 解决了这个问题
阅读 procmail 的文档。您可以告诉它在特殊的 procmail 配置文件中将所有传入的电子邮件发送到这样的 python 脚本
:0:
| ./scripts/ppm_processor.py
Python 有一个可用的“email”包,它可以做任何你可能想用电子邮件做的事情。阅读以下内容....
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
【讨论】:
https://developers.google.com/gmail/gmail_inbox_feed 说你必须有一个公司的 Gmail。
【讨论】: