Wysyłanie wiadomości e-mail z aplikacji Python Flask za pomocą Twilio SendGrid

Opublikowany: 2020-06-30

Decyzja, czy zbudować, czy kupić infrastrukturę poczty e-mail, to nie lada decyzja. Czy masz przepustowość do obsługi problemów z dostarczalnością? Czy będziesz w stanie nadążyć za wysyłaniem w miarę rozwoju? Co jest bardziej opłacalne? Chociaż należy wziąć pod uwagę wiele czynników, jest to rozmowa na temat innego przewodnika (takiego jak przewodnik Build it lub Buy It ).

Zamiast tego ten samouczek pokaże Ci, jak łatwo jest wysyłać wiadomości e-mail za pośrednictwem dedykowanej usługi e-mail. Omówimy sposób dostarczania wiadomości e-mail za pośrednictwem usługi Twilio SendGrid przy użyciu platformy Flask i rozszerzenia Flask-Mail .

Narzędzia samouczka

Aby wykonać ten samouczek, potrzebujesz następujących elementów:

  • Python 3.6 lub nowszy. Jeśli twój system operacyjny nie zapewnia interpretera Pythona 3.6+, możesz przejść do python.org , aby pobrać instalator.
  • Bezpłatne konto Twilio SendGrid. Jeśli jesteś nowym użytkownikiem Twilio SendGrid, zarejestruj się, aby uzyskać konto próbne . Z kontem próbnym możesz wysyłać 40 000 e-maili przez 30 dni, a następnie 100 e-maili dziennie na zawsze.

Konfiguracja z SendGrid

Zanim będziesz mógł wysyłać wiadomości e-mail za pośrednictwem SendGrid, musisz utworzyć klucz API, którego będziesz używać do uwierzytelniania dostępu do usług SendGrid. Zaloguj się na swoje konto SendGrid, a następnie kliknij na lewym pasku bocznym wybierz „Ustawienia”, a następnie Klucze API . Kliknij „Utwórz klucz API”.

Nadaj swojemu kluczowi API przyjazną nazwę (zachowaj ją prostą i bezpośrednią, abyś pamiętał, do czego się odnosi!). W tym samouczku wybraliśmy nazwę Flask-Mail . Jako uprawnienia wybraliśmy „Pełny dostęp”, co daje kluczowi możliwość wykonywania wszystkich niezbędnych funkcji wysyłania wiadomości e-mail (dostęp do punktów końcowych GET, PATCH, PUT, DELETE i POST). Jeśli wolisz utworzyć klucz, który ma bardzo szczegółowe uprawnienia, wybierz „Ograniczony dostęp” i skonfiguruj swój dostęp zgodnie z potrzebami.

Po kliknięciu przycisku „Utwórz i wyświetl” zostanie wyświetlony Twój klucz. Ten klucz nigdy nie zostanie ponownie wyświetlony, więc musisz go kliknąć, aby skopiować go do schowka. Następnie wklej go w bezpiecznym dokumencie, aby móc go później użyć. Jeśli zgubisz klucz, będziesz musiał wygenerować nowy. Po zapisaniu klucza możesz kliknąć przycisk „Gotowe”.

Budowanie środowiska Pythona

Teraz, gdy konfiguracja jest zakończona, możemy zagłębić się w wysyłanie wiadomości e-mail z aplikacji Python Flask. Zaczniemy od utworzenia nowego katalogu na twoim komputerze o nazwie *twilio-sendgrid-tests* (lub czegoś podobnego), a następnie stworzenia w nim nowego wirtualnego środowiska Pythona.

W przypadku użytkowników komputerów Mac i Unix poleceniami są:

Dla użytkowników systemu Windows poleceniami są:

Następnie zainstaluj Flask, Flask-Mail i python-dotenv w swoim środowisku wirtualnym:

Konfigurowanie aplikacji Flask

Zbudujmy startową aplikację Flask i Flask-Mail w pliku app.py :

Tutaj możesz zobaczyć, jak poprawnie skonfigurować Flask-Mail do korzystania z usługi SMTP SendGrid. Ważnymi ustawieniami są:

  • Serwerem pocztowym powinien być `smtp.sendgrid.net`.
  • Port poczty powinien wynosić 587. (Czy wiesz, których portów użyć, kiedy? Sprawdź ten wpis na blogu ) .
  • TLS musi być włączony. (Jaka jest różnica między SSL a TLS ?)
  • Wymagane jest uwierzytelnienie. Jako nazwę użytkownika musisz użyć `apikey` (to samo dotyczy wszystkich kont SendGrid). Hasło to klucz interfejsu API SendGrid, który utworzyłeś w poprzedniej sekcji.

Dla tej aplikacji Flask dodaliśmy powyższe ustawienia w odpowiednich kluczach konfiguracyjnych dla rozszerzenia Flask-Mail. Ze względów bezpieczeństwa zaimportowaliśmy klucz API ze zmiennej środowiskowej o nazwie `SENDGRID_API_KEY`. Ustawiamy również domyślny adres e-mail nadawcy ze zmiennej środowiskowej. Jest to adres e-mail, który domyślnie pojawi się w polu „od” wszystkich e-maili.

Utwórz plik .env z dwiema wymaganymi zmiennymi:

Flask automatycznie zaimportuje zmienne zdefiniowane w pliku .env (o ile masz zainstalowany pakiet python-dotenv), więc to wystarczy, aby wprowadzić te dwie zmienne do konfiguracji aplikacji Flask.

Wysyłanie testowego e-maila

Zobaczmy, jak możesz wysłać sobie testową wiadomość e-mail z powłoki Pythona:

Zauważ, że powłokę Pythona uruchomiliśmy poleceniem `flask shell`. Zapewni to import aplikacji Flask, którą wbudowaliśmy w app.py.

Będąc w powłoce, zaimportuj instancję `mail`, którą utworzyliśmy w app.py i klasę `Message` z Flask-Mail:

Następnie utwórz instancję `Message`:

Ostatnim krokiem jest wysłanie tego e-maila:

I to wszystko! Jeśli wszystko pójdzie zgodnie z planem, e-mail powinien dotrzeć do Twojej skrzynki w ciągu kilku sekund.

Jeśli chcesz zobaczyć przykład trasy Flask, który integruje tę funkcjonalność, oto prosty, który możesz dodać na dole app.py :

Aby ukończyć przykładową aplikację, musisz dodać plik szablonu index.html . Najpierw utwórz katalog dla swoich szablonów:

A następnie zapisz następującą treść w pliku templates/index.html :

Uruchom aplikację testową za pomocą:

Następnie przejdź do http://localhost:5000 w przeglądarce internetowej, aby uzyskać dostęp do aplikacji.

Możesz teraz wpisać adres e-mail odbiorcy, a po kliknięciu przycisku na ten adres zostanie wysłany testowy e-mail.

Rozwiązywanie problemów z dostawą

Korzystając z powyższej aplikacji Flask, powinieneś odnieść sukces w wysyłaniu wiadomości e-mail. Istnieje jednak szansa, że ​​Twoje e-maile nie zostaną dostarczone. Ponieważ SendGrid wysyła wiadomości e-mail asynchronicznie, większość błędów dostarczania występuje po zakończeniu przez nadawcę swojej strony transakcji, więc aplikacja nie będzie miała żadnych wskazówek, że wystąpił błąd. Jeśli tak się stanie, prawdopodobnie wiadomość e-mail została odrzucona przez serwer pocztowy odbiorcy.

Na szczęście, jeśli doświadczysz tego, wysyłając wiadomość e-mail zgodnie z opisem, możesz użyć pulpitu nawigacyjnego Twilio SendGrid, aby pomóc w debugowaniu tego, co się stało. Na pulpicie nawigacyjnym SendGrid kliknij Aktywność , a następnie przycisk „Pokaż całą aktywność” na środku strony. Spowoduje to wyświetlenie listy wszystkich e-maili, które próbowałeś wysłać, wskazując, czy zostały pomyślnie dostarczone, czy nie.

Na powyższym obrazku widać, że wiadomość e-mail wysłana na adres example.com nie została dostarczona. W przypadku wiadomości e-mail, które nie zostały dostarczone, możesz kliknąć wiadomość e-mail, aby wyświetlić szczegółowe informacje, w tym wszelkie odpowiedzi na błędy wysłane przez serwer poczty e-mail odbiorcy.

Po ustaleniu, dlaczego Twoje e-maile nie są wysyłane, istnieje kilka sposobów rozwiązania tych problemów z dostawą. Jeśli zauważysz wiele błędów ortograficznych w wiadomościach e-mail (np. @yaho.com lub @gmal.com), warto skorzystać z narzędzia do sprawdzania poprawności wiadomości e-mail, aby wykryć wszelkie typowe błędy pisowni na liście kontaktów e-mail.

Istnieje wiele innych problemów, które mogą prowadzić do niepowodzenia dostarczania, w tym słaba reputacja wysyłania lub zablokowany adres IP. Dowiedz się wszystkiego o dostarczalności wiadomości e-mail z naszego Przewodnika po dostarczaniu wiadomości e-mail 2020 .

Wniosek

Jak widać z samouczka, Twilio SendGrid łatwo integruje się z przepływem pracy wysyłania wiadomości e-mail w programie Flask, dzięki czemu wysyłanie wiadomości e-mail jest prostym zadaniem.

Jeśli zastanawiasz się teraz, w jaki sposób otrzymujesz wiadomości e-mail z Flask Framework w Pythonie, nie martw się, mamy Cię w zasięgu ręki! Sprawdź ten artykuł: Jak odbierać wiadomości e-mail za pomocą Flask Framework for Python .

Aby uzyskać więcej zasobów na temat integracji z usługą Twilio SendGrid lub wysyłania za pośrednictwem naszych interfejsów API, zapoznaj się z naszym Centrum wiedzy .