Podczas gdy komercyjni klienci poczty e-mail oferują wygodę przyjaznego dla użytkownika interfejsu GUI, często brakuje im elastyczność i możliwość dostosowywania, których wielu programistów lub twórców treści potrzebuje do wysyłania e-maili wymagania.
Czy to za wysłanie e-maila z podziękowaniem do nowego subskrybenta na Twoim kanale mediów społecznościowych, czy dodanie funkcji e-mail do Twój najnowszy projekt, możliwość wysyłania automatycznych wiadomości przy użyciu SMTP w Pythonie jest czymś, co na pewno się pojawi poręczny.
Czytaj dalej, aby dowiedzieć się, jak możesz uzyskać skrypt Pythona do wysyłania wiadomości e-mail działających na Twoim komputerze już dziś.
Co to jest SMTP?
Mówiąc prościej, SMTP lub Simple Mail Transfer Protocol to protokół komunikacyjny dla serwerów pocztowych do przesyłania wiadomości e-mail przez Internet.
Jest integralną częścią warstwy aplikacji pakietu TCP / IP, czyli zestawu protokołów używanych do komunikacji przez Internet lub inne podobne sieci. W sieci, w której zaimplementowano SMTP, proces znany jako
przechowywać i przekazywać pomaga przenosić pocztę między sieciami.W każdym punkcie końcowym oprogramowanie znane jako Mail Transfer Agent (MTA) używa funkcji przechowywania i przekazywania w celu ułatwienia komunikacji między uczestniczącymi serwerami SMTP. Dlatego główną rolą SMTP jest po prostu dyktowanie, gdzie i jak poczta jest przenoszona z jednego punktu do drugiego w sieci.
Pierwsze kroki
Musisz mieć konto e-mail do wysyłania wiadomości e-mail za pomocą tego programu. Dzieje się tak, ponieważ do wysyłania e-maili będziemy używać usługi SMTP klienta poczty e-mail. W tym samouczku będziemy używać Gmaila.
Możesz także użyć lokalnego serwera do debugowania SMTP do wysyłania e-maili testowych, ale na razie będziemy używać konta e-mail do wysyłania e-maili, ponieważ jest to bardziej intuicyjne.
Możliwe jest po prostu użycie istniejącego konta Gmail, ale gdy będziesz bawić się swoim programem, wkrótce może on zostać wypełniony testowymi wiadomościami e-mail. Dlatego zalecamy utworzenie konta „jednorazowego użytku” na potrzeby testów.
Teraz włącz opcję zezwalaj na mniej bezpieczne aplikacje aby uzyskać dostęp do swojego konta Gmail. Jest to kolejny powód, dla którego warto korzystać z jednorazowej wiadomości e-mail, ponieważ nie zaleca się zabawy z ustawieniami prywatności podstawowego adresu e-mail.
Pisanie wiadomości e-mail w Pythonie
Python 3 jest fabrycznie wyposażony w moduł o nazwie smtplib (skrót od biblioteki smtp), który może być używany do pracy z serwerami SMTP.
Jak każdy inny moduł Pythona, pierwszą rzeczą, którą musisz zrobić, jest zaimportowanie smtplib.
import smtplib
Inicjowanie obiektu SMTP
Teraz możesz użyć smtplib do utworzenia obiektu SMTP, który zapewni większość funkcji konwencjonalnego klienta poczty e-mail. Jednak funkcji obiektu SMTP można używać tylko za pośrednictwem metod instancji. Więc oczywiście następnym krokiem jest zadeklarowanie instancji obiektu.
mySMTP = smtplib. SMTP („smtp.google.com”)
Spowoduje to skonfigurowanie obiektu SMTP do wysyłania wiadomości e-mail przy użyciu serwera SMTP firmy Google.
Następnie określamy e-maile nadawcy i odbiorcy. Tutaj przydaje się konto Gmail, które utworzyłeś wcześniej.
emailSender = „[email protected]”
myThroaway = „[email protected]”
emailRecipients = [myThroaway]
Należy tu zauważyć, że lista adresatów jest w rzeczywistości tablicą, co oznacza, że została zaprojektowana do przechowywania wartości nieatomowych. W rezultacie możesz nawet określić całą listę mailingową w tym polu!
Pisanie wiadomości
Prawdopodobnie najprostsza część procesu, tutaj musisz wprowadzić wartości, które normalnie dodajesz podczas tworzenia nowej wiadomości e-mail. To zawiera:
- Dane nadawcy
- Dane odbiorcy
- Przedmiot
- Treść wiadomości
Pola te są umieszczane w potrójnych cudzysłowach i rozgraniczone w następujący sposób:
newEmail = Od: Od osoby
Do: Do osoby
Temat: Test wiadomości e-mail
To jest treść wiadomości e-mail.
Wysyłanie e-maila
Na koniec możemy użyć polecenia sendmail, aby wysłać pocztę z twojego serwera SMTP na serwer odbiorcy.
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
Teraz jest tylko jeden ostatni krok: przeorganizowanie kodu, aby zapobiec przewidywalnym awariom programu.
Rozwiązywanie problemów z programem pocztowym w języku Python
Czasami serwer SMTP może nie nawiązać połączenia z serwerem odbiorcy lub może wystąpić problem z wysyłaniem wiadomości e-mail z jednego portu SMTP do innego. W takim przypadku program może nieoczekiwanie ulec awarii.
Aby uwzględnić takie możliwości, możesz użyć pliku try-z wyjątkiem blok i umieść podatne na błędy instrukcje wewnątrz próbować blok. Cały Twój program, wraz z blokiem try-except, powinien wyglądać mniej więcej tak:
import smtplib
emailSender = „[email protected]”
myThroaway = „[email protected]”
emailRecipients = [myThroaway]
newEmail = Od: Od osoby
Do: Do osoby
Temat: Test wiadomości e-mail
To jest treść wiadomości e-mail.
próbować:
smtpObj = smtplib. SMTP („smtp.gmail.com”)
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
print („E-mail wysłany pomyślnie!”)
z wyjątkiem SMTPException:
print („Błąd: wystąpił błąd podczas wysyłania Twojego e-maila.”)
Zabezpieczanie wiadomości e-mail
Jeśli zamierzasz używać Pythona w rzeczywistym świecie do wysyłania wiadomości e-mail, ważne jest, aby upewnić się, że komunikacja jest bezpieczna po obu stronach.
Użycie prostego serwera SMTP z domyślnym portem nie zapewnia żadnej warstwy szyfrowania komunikacji. Oznacza to, że jeśli jakakolwiek strona trzecia nasłuchuje w Twojej sieci, może uzyskać dostęp do poświadczeń logowania i informacji zawartych w wiadomości e-mail.
Jednym ze sposobów obejścia tego problemu jest użycie protokołu TLS (Transport Layer Security) do szyfrowania komunikacji. Jest to ten sam protokół używany przez głównych klientów poczty e-mail, takich jak Gmail i Outlook, aby zapewnić, że wiadomości e-mail nigdy nie wpadną w niepowołane ręce.
Aby to zrobić, musimy wprowadzić kilka drobnych zmian w utworzonym wcześniej programie.
Pierwszym krokiem jest oczywiście zaimportowanie pliku ssl biblioteka wraz z smtplib. Plik ssl biblioteka daje możliwość tworzenia bezpiecznego kontekstu SSL i komunikacji przez zaszyfrowaną sieć poprzez połączenie z określonymi portami na obu końcach.
Bezpieczny kontekst SSL to nic innego jak zbiór szyfrów, wersji protokołów, zaufanych certyfikatów, opcji TLS i rozszerzeń TLS.
Następnie możemy określić port TLS i dodać kilka ssl funkcje biblioteki do tworzenia bezpiecznych wiadomości e-mail.
Kod ze wszystkimi wprowadzonymi zmianami wygląda mniej więcej tak:
import smtplib, ssl
smtpServer = "smtp.gmail.com"
port = 587
myEmail = "[email protected]"
hasło = "moje_hasło"
#email i hasło mogą być również polami wprowadzania danych przez użytkownika
context = ssl.create_default_context ()
newEmail = Od: Od osoby
Do: Do osoby
Temat: Test wiadomości e-mail
To jest treść wiadomości e-mail.
próbować:
serwer = smtplib. SMTP (smtpServer, port)
server.starttls (kontekst = kontekst)
server.login (nowyE-mail, hasło)
z wyjątkiem wyjątku, jak e:
print („nie można wysłać e-maila”)
Wreszcie:
server.quit ()
Tak jak poprzednio, należy utworzyć i używać instancji SMTP w bloku try-except, aby zapobiec nagłym awariom programu.
Co możesz zrobić z tym skryptem Pythona
Teraz, gdy już opanowałeś niesamowitą i zaskakująco przydatną umiejętność automatyzacji wiadomości e-mail za pomocą kodu, możesz zastosować ją na dowolnej platformie, która wymaga wysyłania wiadomości e-mail na zróżnicowaną listę mailingową.
Od używania go na swojej osobistej stronie internetowej do wysyłania automatycznych wiadomości e-mail z potwierdzeniem po używanie go do wysyłania e-maili z kartkami świątecznymi lub zaproszenia dla rodziny i przyjaciół, użycie tego małego skryptu w Pythonie jest ograniczone tylko przez Ciebie kreatywność.
To tylko jedna z wielu niesamowitych rzeczy, które możesz zrobić w Pythonie. Dzięki wszechobecnemu wsparciu programistów i łatwej do nauczenia składni, opanowanie umiejętności Pythona nigdy nie było łatwiejsze.
Aby kontynuować tworzenie fajnych rzeczy za pomocą kodu, zapoznaj się z naszym przewodnikiem, jak to zrobić zbuduj własnego bota Telegrama w Pythonie 3!
Ulepsz swoje umiejętności programowania i tworzenia stron internetowych w językach Python, sztucznej inteligencji, Keras, PyTorch i nie tylko
- Programowanie
- Gmail
- Wskazówki dotyczące wiadomości e-mail
- Pyton
- Automatyzacja zadań

Yash jest początkującym studentem informatyki, który uwielbia budować i pisać o wszystkich rzeczach związanych z technologią. W wolnym czasie lubi grać w Squasha, czytać najnowszą wersję Murakamiego i polować na smoki w Skyrim.
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.