Sprawdzanie poczty za pomocą Pythona

Jestem zainteresowany uruchomieniem określonej akcji po otrzymaniu maila od konkretnego adres z konkretnym tematem. Aby móc to zrobić, muszę wdrożyć monitorowanie mojej skrzynki pocztowej, sprawdzanie każdej przychodzącej poczty (w szczególności używam Gmaila). jak najłatwiej to zrobić?

Author: Acumenus, 2009-08-04

6 answers

Gmail zapewnia możliwość łączenia się przez POP, które można włączyć w panelu ustawień Gmaila. Python potrafi dość łatwo nawiązywać połączenia przez 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()

Trzeba by po prostu uruchomić ten skrypt jako zadanie cron. Nie wiem, na jakiej platformie jesteś tak YMMV, jak to się robi.

 76
Author: mazelife,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 04:04:04

Gmail dostarcza Atom feed dla nowych wiadomości e-mail. Powinieneś być w stanie to monitorować poprzez uwierzytelnianie za pomocą py cURL (lub innej biblioteki sieci) i pociągnięcie w dół kanału. Tworzenie żądania GET dla każdej nowej wiadomości powinno oznaczać ją jako przeczytaną, więc nie musisz śledzić, które wiadomości e-mail przeczytałeś.

 21
Author: Dana the Sane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 16:41:04

Chociaż nie jest specyficzny dla Pythona, zawsze kochałem procmaila wszędzie tam, gdzie mogłem go zainstalować...!

Po prostu Użyj jako niektórych linii akcji dla wybranych warunków | pathtoyourscript (pionowy pasek AKA pipe, po którym następuje skrypt, który chcesz wykonać w tych przypadkach), a twoja poczta zostanie przekierowana, w wybranych przez Ciebie warunkach, do wybranego skryptu , aby robiła, co chce-trudno myśleć o bardziej ogólnym podejściu do " wyzwalania wybranych działań po otrzymaniu wiadomości które spełniają Twoje specyficzne warunki!! Oczywiście nie ma ograniczeń co do tego, ile warunków możesz sprawdzić, ile linii akcji może wyzwolić pojedynczy warunek (wystarczy zamknąć wszystkie linie akcji, które chcesz w klamrach { }), itd., itp.

 8
Author: Alex Martelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 05:28:04

Ludzie wydają się być napompowani o Lamson:

Https://github.com/zedshaw/lamson

Jest to serwer SMTP napisany w całości w Pythonie. Jestem pewien, że możesz to wykorzystać, aby zrobić wszystko, czego potrzebujesz - po prostu prześlij wiadomości gmail do tego serwera SMTP, a następnie zrób to, co chcesz.

Jednak myślę, że prawdopodobnie najłatwiej jest wykonać powyższą rekomendację ATOM feed.

EDIT: Lamson został porzucony

 4
Author: Adam Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-30 17:51:00

Znalazłem całkiem dobry fragment Kiedy chciałem zrobić to samo (A przykład używa Gmaila). Sprawdź również Wyniki wyszukiwania google na ten temat.

 1
Author: Kredns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 03:18:07

Ostatnio rozwiązałem ten problem używając procmaila i Pythona

Przeczytaj dokumentację dla procmaila. Możesz powiedzieć mu, aby wysyłał wszystkie przychodzące wiadomości e-mail do skryptu Pythona, takiego jak ten, w specjalnym pliku konfiguracyjnym procmaila

:0:
| ./scripts/ppm_processor.py

Python ma dostępny pakiet "e-mail", który może zrobić wszystko, co chcesz zrobić za pomocą poczty e-mail. Zapoznaj się z poniższymi....

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
 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-04 05:49:42