Chcę wywołać określone działanie po otrzymaniu wiadomości e-mail od określonego adresu o określonym temacie. Aby to zrobić, muszę zaimplementować monitorowanie mojej skrzynki pocztowej, sprawdzając każdą przychodzącą pocztę (w szczególności używam Gmaila). jaki jest najprostszy sposób to zrobić?Sprawdzanie poczty e-mail za pomocą Pythona
Odpowiedz
Gmail zapewnia możliwość podłączenia przez pop, które można włączyć w panelu ustawień Gmail. Python może łatwo nawiązać 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()
Wystarczy uruchomić ten skrypt jako zadanie cron. Nie wiesz, na jakiej platformie jesteś, więc YMMV, jak to się robi.
Znalazłem pretty good snippet kiedy chciałem zrobić to samo (a przykład używa Gmaila). Sprawdź również na tym google search results.
Link jest uszkodzony. – Elazar
ten sam link z web.archive.org: [Szybkie i brudne narzędzie do sprawdzania serwera pocztowego, python] (http://web.archive.org/web/20090119142342/http://snippets.dzone.com/posts/show/4024) – davedwards
Gmail dostarcza atomowi feed dla nowych wiadomości e-mail. Powinieneś być w stanie to monitorować, uwierzytelniając się przy pomocy cURL (lub innej biblioteki sieciowej) i ściągając kanał. Wykonywanie żądania GET dla każdej nowej wiadomości powinno oznaczać ją jako przeczytaną, aby nie trzeba było śledzić przeczytanych e-maili.
Każdy pomysł, jak wysłać odpowiednie informacje, które należy autoryzować? – PascalVKooten
@ PascalvKołącz późną odpowiedź, ale format to https: //
@Whitebird Wciąż brzmi to warte zbadania. Myślę, że moje zainteresowanie jest asynchroniczne; teraz, gdy mam odpowiedź, wciąż mogę z tym pogodzić^_^Dzięki! – PascalVKooten
Chociaż nie jest to specyficzne dla Pythona, zawsze lubiłem procmail, gdziekolwiek mogłem go zainstalować ...!
Po prostu używaj jako niektórych linii działania dla warunków do wyboru | pathtoyourscript
(pionowy pasek AKA pipe, a następnie skrypt, który chcesz wykonać w tych przypadkach) i twoja poczta zostanie wysłana, zgodnie z wybranymi przez ciebie warunkami, do wybrany przez ciebie skrypt, aby zrobił cokolwiek zechce - trudno wymyślić bardziej ogólne podejście do "wyzwalania akcji twojego wyboru po otrzymaniu maili spełniających twoje specyficzne warunki !! Oczywiście nie ma ograniczeń co do liczby warunków można sprawdzić, ilu kierunki działań jeden warunek może wywołać (tylko ująć wszystkie linie działania, które mają w { }
szelki), itp, itd.
Procmail naprawdę nie rozwiąże problemu uruchomienia akcji (chyba że dana akcja wysyła wiadomość). –
@J. Peterson, żartujesz, prawda ?! '| pathtoyourscript' i możesz uruchomić wybrany przez siebie skrypt i przesłać do niego pocztę, gdy twoje ulubione warunki są spełnione, a skrypt może zrobić WSZYSTKO czego chce - jak to NIE "wywoływać akcji" ?! –
ja niedawno rozwiązał ten problem za pomocą procmail i Python
Przeczytaj dokumentację procmaila. Można powiedzieć, to wysłać e-mail do wszystkich przychodzących skrypt Pythona jak to w pliku konfiguracyjnym specjalnego procmail
:0:
| ./scripts/ppm_processor.py
Python posiada pakiet „email” dostępną że może zrobić wszystko, czego można chcieć zrobić z poczty elektronicznej. Przeczytać na poniższych nich ....
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
Ludzie wydają się być pompowana w górę o Lamson:
https://github.com/zedshaw/lamson
Jest to serwer SMTP w całości napisany w Pythonie. Jestem pewien, że możesz wykorzystać to do zrobienia wszystkiego, czego potrzebujesz - po prostu przesyłaj wiadomości z Gmaila na ten serwer SMTP, a następnie rób to, co chcesz.
Jednak uważam, że najprawdopodobniej najprościej jest wykonać powyższe zalecenie paszportu ATOM.
EDIT: Lamson został opuszczony
łosoś jest widelcem, starając się dotrzeć do python 3 - jest o wiele bardziej ostatnio dotykany - https://github.com/moggers87/salmon – user2692263
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')
To jest najbardziej przerażająca, nieprawdziwie pełna i niepoprawna weryfikacja poczty e-mail, jaką kiedykolwiek widziałem; gdybym zwrócił uwagę na jej błędy, nie wiedziałbym od czego zacząć. Proszę, nigdy go nie używajcie. – Todor
Wróciłem do tego snipped, ponieważ coś mi przeszkadzało ... Więc nie tylko ogólny algorytm sprawdzania poprawności jest wadliwy, ale logiczne op w if-s jest zupełnie błędne. jeśli ("@" i ".") W n: będzie zawsze wyglądać tylko dla ".", Ponieważ operacja boolowska "@" i "," zostanie obliczona na ".". I nie daj mi zacząć od drugiego, jeśli. – Todor
- 1. email walidacji pola poczty
- 2. Sprawdzanie uprawnień do plików w systemie Linux za pomocą Pythona
- 3. Jak wyłączyć automatyczne sprawdzanie poczty Mozilla Thunderbird
- 4. Sprawdzanie poprawności jquery za pomocą wywołania ajax
- 5. Logowanie do FOSUserBundle za pomocą poczty elektronicznej (Symfony2)
- 6. Uzyskiwanie javax.mail.NoSuchProviderException przy próbie wysyłania poczty za pomocą java
- 7. Sprawdzanie poprawności za pomocą Caliburn.Micro
- 8. Jak wysłać załącznik za pomocą poczty e-mail wp_mail
- 9. Django 1.8 wysyłania poczty za pomocą gmail SMTP
- 10. wysyłania wiadomości e-mail za pomocą poczty elektronicznej szympansa api
- 11. Zmień nazwę nadawcy poczty php zamiast [email protected]
- 12. Wtyczka email-ext firmy Jenkins nie wysyłająca poczty
- 13. Sprawdzanie atrybutów klasy Pythona
- 14. Sprawdzanie poprawności XML za pomocą LibXML
- 15. Sprawdzanie pisowni dla Pythona
- 16. Sprawdzanie formatu czasu Pythona
- 17. Obrazy zerwania podczas wysyłania poczty za pomocą SmtpClient
- 18. Przekierowanie wejścia za pomocą pythona
- 19. Skrobanie ekranu za pomocą Pythona
- 20. Parsowanie SQL za pomocą Pythona
- 21. Wykrywanie anomalii za pomocą Pythona
- 22. Narysuj teren za pomocą pythona?
- 23. Python - Sprawdzanie poprawności za pomocą wielu schematów za pomocą lxml
- 24. Sprawdzanie wywołania funkcji i sprawdzanie argumentów za pomocą szpiegów sinonowych
- 25. Sprawdzanie poprawności klienta ASP.NET MVC za pomocą jQuery za pomocą komendy Html.ValidationMessage?
- 26. walidacja email za pomocą wyrażenia regularnego w JSF 2/PrimeFaces
- 27. Pomiń sprawdzanie formularza za pomocą przycisku polecenia
- 28. Sprawdzanie określonego parametru za pomocą Moq
- 29. Sprawdzanie tytułu strony za pomocą rspec
- 30. sprawdzanie wartości zmiennej za pomocą operatora lub
Dziękuję bardzo !!! Działa świetnie. Jedyny problem jaki mam teraz to to, że muszę pobrać tylko nowe wiadomości. Oczywiście możliwe jest pobranie wszystkich wiadomości, a następnie porównanie starej listy z nową. Jednak zastanawiam się, , czy istnieje lepszy sposób to zrobić, jeśli istnieje wbudowana metoda do tego. – Sasha
W trybie POP Gmail zezwala tylko na jednorazowe pobranie wiadomości. Kolejne połączenia nie pokażą ci wiadomości. Chyba że jedna z dwóch rzeczy się dzieje: czy masz włączony tryb "ostatnio włączony"? Zobacz tutaj: http://mail.google.com/support/bin/answer.py?answer=47948, jak to wyłączyć. Alternatywnie, jeśli w Gmailu jest za każdym razem ten sam e-mail, może to być spowodowane tym, że metoda quit() nie jest wywoływana w Twoim połączeniu pop. Czy istnieje wyjątek, który może zostać podniesiony, ale nie został złapany przed wywołaniem rezygnacji? Następnie Gmail da ci tę samą pocztę. – mazelife
Dane wyjściowe nie występują. – GLHF