Na przykład chcesz wysłać do klientów przypomnienie o pozostałych rachunkach i masz wszystkie dane związane z klientami, takie jak ich numery, adres, wiek itp. Prosty program w Python, aby automatycznie to za Ciebie zrobić. W tym samouczku dowiemy się, jak działa protokół e -mail i jak możesz zautomatyzować proces, aby zaoszczędzić swój cenny czas.
Prosty protokół transferu poczty (SMTP) jest skomputeryzowany odpowiednik Twojej usługi pocztowej. Jest to protokół, który działa na warstwie aplikacji sieci TCP/IP. Jest to standardowy protokół wysyłania i odbierania wiadomości e -mail przez Internet. Proces przesyłania poczty składa się z serwerów e -mail i klientów wysyłających i odbierających e -maile do siebie.
Na przykład masz konto Gmail i chcesz wysłać wiadomość e -mail do swojego przyjaciela na jego koncie Yahoo. Piszesz wiadomość e -mail i naciśnij Wyślij, ale proces zaplecza jest trochę skomplikowany, a aby zrozumieć ten proces, najpierw będziesz musiał zrozumieć SMTP. Twój klient e -mail SMTP najpierw wysyła Helo (Lub Ehlo) Na serwerze Gmaila można powiedzieć, że to polecenie lub nagłówek jest równoważne Gospodarz nagłówek w protokole HTTP i służy do identyfikacji serwera za pomocą nazwy domeny. Po Helo lub Ehlo klient uwierzytelnia się na serwer za pomocą podanej nazwy użytkownika i hasła za pomocą Auth Komenda. Następnie określa adres e -mail nadawcy i odbiorcy, a następnie ciało wiadomości i wysyła e -mail na serwer Gmail. Serwer Gmaila najpierw potwierdzi, że to, czy adres e -mail odbiorcy na Yahoo istnieje, czy nie, wówczas wyśle wiadomość e -mail na serwer Yahoo, na którym odbiorca może odzyskać swoje e -maile z.
Smtplib
Smtplib to biblioteka Python, która może być używana jako klient SMTP, tak jak Twój Gmail, Yahoo, Thunderbird lub jakikolwiek inny klient e -mail i może być używany do wysyłania e -maili. Możemy wykonywać wszystkie zadania za pomocą klienta SMTPLIB, które możemy zrobić z tymi, które mają graficzny interfejs użytkownika.
Jest domyślnie w Pythonie, jeśli go nie masz, możesz zainstalować za pomocą następującego polecenia.
Ubuntu@ubuntu: ~ $ pip instaluj smtplib
Lub w Python3
Ubuntu@ubuntu: ~ $ pip instaluj smtplib
Pisanie pierwszego e -maila z Pythonem
W tym samouczku użyję konta Gmail jako nadawcy, będę także korzystać z konsoli Python, więc łatwiej będzie mi wyjaśnić każdą wiersz kodu krok po kroku. Aby rozpocząć, musimy umożliwić nasz dostęp Gmaila do mniej bezpiecznych aplikacji.
Zaloguj się więc na swoje konto Gmail, a następnie przejdź do ustawień konta.
Teraz upewnij się, że dostęp do mniej bezpiecznych aplikacji jest włączony.
Teraz otwórz swoją konsolę Python i zacznij pisać swój pierwszy e -mail za pomocą Pythona
Ubuntu@ubuntu: ~ $ Python
Python 2.7.16 (domyślnie, 7 października 2019, 17:36:04)
[GCC 8.3.0] na Linux2
Wpisz „Pomoc”, „Copyright”, „Kredyty” lub „Licencja”, aby uzyskać więcej informacji.
// Zaimportuj bibliotekę SMTP
>>> Importuj smtplib
// Podłącz się do serwera Gmaila z nazwą domeny i numerem portu (to ustawienie różni się dla
Każdy dostawca e -maila, spójrz na stół podany poniżej)
>>> MailObj = smtplib.SMTP ('SMTP.Gmail.com ', 587)
// przywitaj się z serwerem
>>> MailObj.ehlo ()
(250, SMTP.Gmail.com w Twojej służbie [103.255.4.246] \ nsize35882577 \ n8bitmime \ nstarttls \
nenhancedStatuscodes \ npipelining \ nchunking \ nsmtputf8 ')
// Port 587 oznacza, że używamy zaszyfrowanego połączenia TLS, więc rozpocznij szyfrowane TLS
Komunikacja za pomocą startutls (), aby nasze poświadczenia i wiadomości nie zostały wąchane
>>> MailObj.starttls ()
(220, 2.0.0 Gotowy do rozpoczęcia TLS ')
// Zaloguj się do konta Gmail za pomocą wiadomości e -mail i hasła
>>> MailObj.login („[email protected] ', „s3cr3t_p4ssw0rd”)
(235, 2.7.0 zaakceptowane ')
// Podaj adres e -mail i treści e -mail nadawcy i odbiorcy
>>> MailObj.sendmail („[email protected] ', „[email protected] ', „Temat:
Witaj świecie! \ n Hello World! To jest mój pierwszy e -mail Hello World w Python ')
// Zamknij połączenie z serwerem Gmaila
>>> MailObj.zrezygnować()
(221, 2.0.0 Połączenie zamykania B6SM4519863LFI.72 - GSMTP ')
W powyższym przykładowym programie zastąp podaną treść własną. Jeśli nie jesteś użytkownikiem Gmaila, możesz użyć serwera poczty e -mail swojego dostawcy. Oto lista nazw domen i porty niektórych popularnych dostawców poczty.
Nazwa | Nazwa domeny serwera | Port |
Gmail | SMTP.Gmail.com | 587 |
Outlook / Hotmail | SMTP-MAIL.perspektywy.com | 587 |
Poczta Yahoo | SMTP.Poczta.wieśniak.com | 587 |
Verizon | SMTP.Verizon.internet | 465 |
Comcast | SMTP.Comcast.internet | 587 |
Kilka słów o IMAP
Właśnie przestudiowaliśmy, że SMTP służy do wysyłania e -maili, ale do czego służy IMAP (protokół przesyłania wiadomości internetowych)? SMTP nie może być używane do wyszukiwania i otrzymywania wiadomości e -mail z serwera, w tym celu używany jest protokół IMAP lub POP3.
Imapclient, imaplib i pyzmail
Istnieją dwie główne biblioteki w Python, które mogą być używane jako klient IMAP do znalezienia, pobierania i usuwania wiadomości e -mail z serwera pocztowego. Python ma domyślnie imaplib biblioteka, ale kolejna biblioteka zewnętrzna imapclient jest bardziej skuteczny i łatwy w użyciu. W tym samouczku użyjemy imapclient Aby pobrać wiadomości e -mail z serwera pocztowego.
Problem z imapclient jest to, że pobiera e -maile z serwera pocztowego w formacie RAW. Więc potrzebujemy PyZmail Biblioteka jako parser dla przyjaznego użytkownika. Aby zainstalować obie biblioteki, wpisz
Ubuntu@ubuntu: ~ $ sudo pip instaluj imapclient
Ubuntu@ubuntu: ~ $ sudo pip instaluj pyzmail
Uzyskiwanie wiadomości e -mail z serwera pocztowego
Teraz dowiemy się, jak wyszukiwać i pobierać pocztę e -mail z serwera pocztowego za pomocą ImapClient. Użyjemy imapclient do wyszukiwania i pobierania wiadomości e -mail z serwera, a następnie użyjemy PyZmail, aby przeanalizować tę surową zawartość. Let
// Importuj bibliotekę imapclient
>>> Importuj imapclient
// Połącz się z serwerem IMAP Gmail
>>> obj = imapclient.Imapclient („imap.Gmail.com ', ssl = true)
// zaloguj się do konta e -mail za pomocą poświadczeń
>>> obj.Login („[email protected] ', „s3cr4tp4ss”)
„[email protected] Authentited (Success) '
// Wybierz folder wiadomości, aby przeczytać i.e skrzynka odbiorcza, szkice, wysyłane maile
>>> obj.Select_Folder („skrzynia odbiorcza”, ReadOnly = true)
„IsteS”: 830, „PermanentFlags”: (), „najwyższy sens”: 112999, „UIdNext”: 931,
„Flagi”: („\\ odpowiedzi”, „\\ flagged”, „\\ draft”, „\\ usunted”, „\\ widzi”,,
„$ Notphishing”, „$ phishing”), „uidValididge”: 1, „tylko odczyt”: ["],„ najnowszy ”: 0
// Wyszukaj wiadomości w skrzynce odbiorczej lub zastosuj filtr, wyświetli się poniżej filtr
Ty wiadomości otrzymane po 25-października-2019
>>> Mail_ids = obj.Wyszukaj ([„od”, '25 -Ct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// Lista „Mail_ids” zawiera listę identyfikatorów e-mail otrzymanych od 25-października-2019,
Możesz pobrać wiadomość e -mail za pomocą funkcji ImapClient Fetch.
>>> raw_mail = obj.fetch ([919], [„body []”, „flagi”])
// Teraz zawartość zmiennej RAW_mail jest w formacie RAW, nie można jej wyświetlić na
ekran bezpośrednio, więc potrzebowalibyśmy parsera, aby przeanalizować tę zawartość dla przyjaznego użytkownika
>>> Importuj PyZmail
>>> wiadomość = pyzmail.Pyzmessage.Fabryka (Raw_mail [919] [„Body [] '])
// teraz e -mail jest analizowany i przechowywany w zmiennej wiadomości, aby uzyskać temat
e -mail, użyj funkcji get_subject
>>> Wiadomość.get_subject ()
Udostępnij swoje umiejętności w tym Halloween z 25% zniżki
// Podobnie możesz zobaczyć dane nadawcy
>>> Wiadomość.get_addresses („from”)
[(u'usama azad ”,„ [email protected] ')]
>>> Wiadomość.get_addresses („to”)
[(U'[email protected] ', „[email protected] ')]
// Aby uzyskać treść e -maila, wpisz
>>> Wiadomość.Text_part.get_payload ().dekoduj (wiadomość.Text_part.bajki)
u ”Cześć! Ciesz się płaskim 25% na naszych kursach premium ”
Jeśli masz konto w innym dostawcy usług e -mailowych innych niż Gmail, możesz zalogować się na serwerze IMAP. Oto lista nazwy domeny IMAP niektórych znanych dostawców poczty.
Dostawca | Nazwa domeny dla serwera IMAP |
WIEŚNIAK | imap.Poczta.wieśniak.com |
Hotmail/Outlook | IMAP-MAIL.perspektywy.com |
Verizon | przychodzące.Verizon.internet |
Comcast | imap.Comcast.internet |
AT&T | imap.Poczta.att.internet |
Usuwanie wiadomości e -mail z serwera IMAP
Podobnie jak wyszukiwanie i pobieranie wiadomości e -mail z serwera, możesz również usuwać wiadomości e -mail z serwera pocztowego za pomocą ich UID. Po prostu wykonaj podane kroki
// Aby usunąć wiadomość e -mail, musisz przekształcić odczyt tylko do „Fałsz”, aby uzyskać dostęp do zapisu do swojego
e -maile
>>> obj.Select_Folder („skrzynia odbiorcza”, ReadOnly = false)
>>> Mail_ids = obj.Wyszukaj ([„od”, '25 -Ct-2019 '])
>>> Mail_ids
[919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930]
// Podaj UID e -mail lub listę UD e -mail, po uruchomieniu poniżej polecenia,
Twój e -mail zniknie z skrzynki odbiorczej.
>>> obj.delete_messages (919)
919: („\\ widzi”, '\\ usunted')
// To polecenie trwale usunie twoje e -maile z serwera pocztowego
>>> obj.wykreślić()
('Powodzenie', [])
https: // techtopz.com/build-a-birthday-Reminder-Application-in-Python-on-on-Mac/
Wykonaj własne przypomnienie urodzinowe
Masz urodziny swoich przyjaciół w nadchodzących miesiącach i chcesz życzyć im w urodzinach. Ale masz dużo pracy w swoim biurze i istnieje możliwość, że zapomnisz ich życzyć. Więc to zadanie można automatycznie wykonać za pomocą Pythona. Poniżej znajduje się kod do wykonania tego zadania.
// Importowanie modułówTeraz tworzymy „plik urodzinowy”, w którym zapisujemy nazwiska, adresy e -mail i ich datę urodzenia. To jest prosty plik tekstowy i wygląda tak.
Wyjaśnienie
Przeczytamy ten plik za pomocą skryptu Pythona i sprawdzimy, czyje urodziny nadchodzą i życzę im. Przede wszystkim zaimportujemy niektóre moduły. Moduł DateTime ma funkcje, które dają nam aktualną datę i godzinę i wiele innych. Ale użyjemy tego tylko do znalezienia bieżącej daty i godziny. Moduł SMTPLIB służy do wysyłania poczty i został wyjaśniony powyżej. Moduł Re ma funkcje używane do znalezienia wyrażenia regularnego z ciągu.
W tym skrypcie definiujemy funkcję „send_mail”, która wysyła pocztę do „revever_mail_address”, którego nazwa to „nazwa”. Oba argumenty są przekazywane do funkcji z głównego korpusu MSG. W głównym treści skryptu zobaczymy, w jaki sposób znajdziemy „revever_mail_address” i „nazwa”.
Wysyłanie wiadomości e -mail za pomocą SMTPLIB zostało wyjaśnione powyżej, abyś mógł go przeczytać i nie zostanie on omówiony tutaj.
W głównym ciele przechodzimy do katalogu, w którym uratowaliśmy „urodziny_file” za pomocą „systemu operacyjnego.chdir () '. Wtedy mamy „pobywę”, co jest zawsze prawdziwe, więc będzie sprawdzić urodziny w sposób ciągły. Teraz dostajemy bieżącą datę i godzinę i zapisujemy ją w zmiennej „Today”. To wygląda tak.
2019-11-01 16:19:07.144925
Wyodrębnimy rok, miesiąc, dzień, godzinę, minuty i sekundy za pomocą wskaźników tych ilości. Następnie otworzymy urodziny_file w obiekcie „Birthday_file” w trybie czytania, abyśmy mogli to tylko przeczytać. Teraz zapiszymy wszystkie wiersze tego pliku na liście linii. „Birthday_file.ReadLines () „Zapisza każdy wiersz na liście„ wierszy ”. Następnie zamkniemy urodziny_flii za pomocą „urodzin_file.Funkcja Close () '.
Teraz przeczytamy każdą linię jeden po drugim, używając do pętli. W każdej linii tylko dane jednej osoby są dostępne w „Birthday_file”, więc czytamy tylko dane jednej osoby jednocześnie w tej pętli.
Następnie wyodrębnimy datę urodzenia, adres e -mail i nazwisko osoby za pomocą modułu rep. Jak napisaliśmy datę w następującym formacie
ROYYY-MM-DD
Dlatego wykonamy wyrażenie regularne „dateex”, które znajduje ten format w linii.
Odnośnie.Compile (r ”\ d 4-\ d 2-\ d 2”)
Powyższe polecenie Znajdź ciąg, który ma „4 cyfry”, a następnie „-” następnie „2 cyfry”, a następnie „-” i „2 cyfry”. To da nam datę narodzin osoby, abyśmy wyodrębnili dzień porodu i miesiąc z tego wyrażenia.
Podobnie znajdziemy adres e -mail za pomocą wyrażeń regularnych. Następnie porównajmy urodziny_month i bieżący_month i urodziny_day i current_day. Jeśli te warunki są zadowoleni, wyślemy pocztę urodzinową za pomocą funkcji „send_mail” w dokładnym '08: 00 ''.
Teraz upewnimy się, że ten skrypt Python działa za każdym razem. Aby to zrobić, dodamy to zadanie do Crontab. Crontab w Linux służy do automatycznego wykonywania zadań. Musimy po prostu dodać zadanie do crontab. Aby to zrobić, wykonaj podane kroki.
Ubuntu@ubuntu: ~ $ crontab -e
@reboot Python ścieżka_to_the_script
Powyższe polecenia umożliwią systemowi uruchomienie skryptu Python za każdym razem, gdy ponownie uruchamiasz system. W ten sposób twój system będzie uruchamiał skrypt Python za każdym razem, gdy system jest włączony.