Подтвердить что ты не робот

Проверка электронной почты с помощью Python

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

4b9b3361

Ответ 1

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()

Вам просто нужно запустить этот script как задание cron. Не уверен, на какой платформе вы работаете, поэтому YMMV о том, как это сделать.

Ответ 2

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

Ответ 3

Пока я не был специфичен для Python, я всегда любил procmail, где бы я мог его установить...!

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

Ответ 4

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

https://github.com/zedshaw/lamson

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

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

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

Ответ 6

Недавно я решил эту проблему с помощью procmail и python

Прочитайте документацию для procmail. Вы можете сказать ему отправить все входящие письма на python script, как это, в специальный файл конфигурации 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

Ответ 7

print('please enter str')
def email(n=str):    
    if ('@' and '.') in n:
        z=n.find('@')
        c=n.find('.')
        if type(n[:z] and n[z:c] and n[c:])==str:
            print('valid email')
        else:
            print('Invalid email')
    else:
        print('Invalid email')