Проверка электронной почты с помощью Python - PullRequest
51 голосов
/ 04 августа 2009

Мне интересно инициировать определенное действие при получении письма от конкретного адрес с конкретной темой. Для того, чтобы сделать это, мне нужно реализовать мониторинг моего почтового ящика, проверка каждой входящей почты (в частности, я использую gmail). какой самый простой способ сделать это?

Ответы [ 6 ]

71 голосов
/ 05 августа 2009

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 о том, как это делается.

19 голосов
/ 04 августа 2009

Gmail предоставляет атом фид для новых сообщений электронной почты. Вы должны быть в состоянии контролировать это, аутентифицируясь с помощью py cURL (или другой сетевой библиотеки) и опуская канал. Выполнение запроса GET для каждого нового сообщения должно пометить его как прочитанное, чтобы вам не приходилось отслеживать, какие письма вы прочитали.

8 голосов
/ 04 августа 2009

Хотя я не специфичен для Python, мне всегда нравилось procmail везде, где я мог его установить ...!

Просто используйте в качестве некоторых из ваших линий действий для выбранных вами условий | pathtoyourscript (вертикальная черта AKA-конвейер, за которой следует сценарий, который вы хотите выполнить в этих случаях), и ваша почта отправляется в соответствии с выбранными вами условиями, чтобы сценарий по вашему выбору, для того, чтобы он делал все, что захочет - трудно придумать более общий подход к «запуску действий по вашему выбору при получении писем, отвечающих вашим конкретным условиям !! Конечно, нет предела тому, сколько условия, которые вы можете проверить, сколько строк действий может вызвать одно условие (просто заключите все нужные строки действий в { } фигурные скобки) и т. д. и т. д.

4 голосов
/ 04 августа 2009

Люди, похоже, накачаны насчет Ламсона:

https://github.com/zedshaw/lamson

Это SMTP-сервер, полностью написанный на Python. Я уверен, что вы могли бы использовать это, чтобы сделать все, что вам нужно - просто переслать сообщения Gmail на этот SMTP-сервер, а затем делать то, что вы хотите.

Тем не менее, я думаю, что, вероятно, проще всего выполнить рекомендации по подаче ATOM выше.

РЕДАКТИРОВАТЬ: Ламсон был заброшен

1 голос
/ 04 августа 2009

Я нашел довольно хороший фрагмент , когда я хотел сделать то же самое (и пример использует gmail). Также ознакомьтесь с результатами поиска Google по этому вопросу.

0 голосов
/ 04 августа 2009

Я недавно решил эту проблему, используя procmail и python

Прочтите документацию по procmail. Вы можете указать, чтобы все входящие письма отправлялись на скрипт python, как это, в специальном конфигурационном файле procmail

: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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...