Twilio SendGrid ile Python Flask Uygulamalarından E-posta Gönderme

Yayınlanan: 2020-06-30

E-posta altyapınızı oluşturmaya veya satın almaya karar vermek küçük bir karar değildir. Teslim edilebilirlik sorunlarını destekleyecek bant genişliğine sahip misiniz? Büyüdükçe göndermenize devam edebilecek misiniz? Daha uygun maliyetli olan nedir? Göz önünde bulundurulması gereken birkaç faktör olsa da, bu başka bir rehber için bir konuşmadır (bu Oluştur veya Satın Al kılavuzu gibi ).

Bunun yerine, bu eğitim size özel bir e-posta hizmeti aracılığıyla e-posta göndermenin ne kadar kolay olduğunu gösterecektir. Flask çerçevesini ve Flask-Mail uzantısını kullanarak Twilio SendGrid aracılığıyla e-postanın nasıl teslim edileceğini anlatacağız .

Eğitim araçları

Bu öğreticiyi takip etmek için aşağıdaki öğelere ihtiyacınız var:

  • Python 3.6 veya daha yenisi. İşletim sisteminiz bir Python 3.6+ yorumlayıcı sağlamıyorsa , bir yükleyici indirmek için python.org adresine gidebilirsiniz .
  • Ücretsiz bir Twilio SendGrid hesabı. Twilio SendGrid'de yeniyseniz, bir deneme hesabı için kaydolun . Deneme hesabıyla 30 gün boyunca 40.000 e-posta, ardından sonsuza kadar günde 100 e-posta gönderebilirsiniz.

SendGrid ile kurulum

SendGrid aracılığıyla e-posta göndermeden önce, SendGrid hizmetlerine erişimi doğrulamak için kullanacağınız bir API anahtarı oluşturmanız gerekir. SendGrid hesabınıza giriş yapın, ardından sol kenar çubuğuna tıklayın “Ayarlar”ı ve ardından API Anahtarlarını seçin . "API Anahtarı Oluştur"u tıklayın.

API anahtarınıza kolay bir ad verin (neye atıfta bulunduğunu hatırlamanız için basit ve anlaşılır tutun!). Bu eğitim için Flask-Mail adını seçtik. Anahtara gerekli tüm e-posta gönderme işlevlerini (GET, PATCH, PUT, DELETE ve POST uç noktalarına erişim) gerçekleştirme yeteneği veren izinler için “Tam Erişim”i seçtik. Çok özel izinlere sahip bir anahtar oluşturmayı tercih ediyorsanız, "Kısıtlı Erişim"i seçin ve erişiminizi gerektiği gibi yapılandırın.

“Oluştur ve Görüntüle” düğmesine tıkladığınızda, anahtarınız size sunulacaktır. Bu anahtar bir daha asla gösterilmeyecek, bu yüzden panoya kopyalamak için üzerine tıklamanız gerekiyor. Ardından, daha sonra kullanabilmeniz için güvenli bir belgeye yapıştırın. Anahtarınızı kaybederseniz, yepyeni bir tane oluşturmanız gerekecektir. Anahtarınızı kaydettikten sonra “Bitti” düğmesine tıklayabilirsiniz.

Python ortamı oluşturma

Artık kurulumu tamamladığımıza göre, Python Flask uygulamalarından nasıl e-posta göndereceğimize geçebiliriz. Bilgisayarınızda *twilio-sendgrid-tests* (veya benzeri bir şey) adlı yeni bir dizin oluşturarak ve ardından bunun içinde yeni bir Python sanal ortamı oluşturarak başlayacağız.

Mac ve Unix kullanıcıları için komutlar şunlardır:

Windows kullanıcıları için komutlar şunlardır:

Ardından, sanal ortamınıza Flask, Flask-Mail ve python-dotenv'i kurun:

Flask uygulaması kurma

app.py dosyasında bir başlangıç ​​Flask ve Flask-Mail uygulaması oluşturalım :

Burada Flask-Mail'i SendGrid'in SMTP hizmetini kullanacak şekilde nasıl düzgün bir şekilde yapılandıracağınızı görebilirsiniz. Önemli ayarlar şunlardır:

  • Posta sunucusu `smtp.sendgrid.net` olmalıdır.
  • Mail portu 587 olmalıdır. (Hangi portları ne zaman kullanacağınızı biliyor musunuz? Bu blog gönderisine göz atın. )
  • TLS etkinleştirilmelidir. ( SSL ve TLS arasındaki fark nedir ?)
  • Kimlik doğrulama gerekli. Kullanıcı adı için "apikey" kullanmalısınız (bu, tüm SendGrid hesapları için aynıdır). Parola, önceki bölümde oluşturduğunuz SendGrid API anahtarıdır.

Bu Flask uygulaması için, Flask-Mail uzantısı için uygun yapılandırma anahtarlarına yukarıdaki ayarları ekledik. Güvenlik nedeniyle, API anahtarını "SENDGRID_API_KEY" adlı bir ortam değişkeninden içe aktardık. Ayrıca bir ortam değişkeninden varsayılan bir gönderen e-posta adresi belirledik. Bu, varsayılan olarak tüm e-postaların "gönderen" alanında görünecek e-posta adresidir.

Gerekli iki değişkenle bir .env dosyası oluşturun:

Flask, .env dosyasında tanımlanan değişkenleri otomatik olarak içe aktaracaktır (python-dotenv paketi kurulu olduğu sürece), bu yüzden bu iki değişkeni Flask uygulama yapılandırmasına almak için bu yeterlidir.

Test e-postası gönderme

Python kabuğundan kendinize nasıl bir test e-postası gönderebileceğinizi görelim:

Python kabuğunu `flask shell` komutuyla başlattığımızı unutmayın. Bu, app.py'de oluşturduğumuz Flask uygulamasının içe aktarılmasını sağlayacaktır.

Kabuğa girdikten sonra, app.py'de oluşturduğumuz 'mail' örneğini ve Flask-Mail'den 'Message' sınıfını içe aktarın:

Ardından bir "Mesaj" örneği oluşturun:

Son adım bu e-postayı göndermektir:

Ve bu kadar! Her şey plana göre giderse, e-posta sadece birkaç saniye içinde gelen kutunuza ulaşmalıdır.

Bu işlevselliği entegre eden bir Flask rota örneği görmek istiyorsanız, app.py'nin altına ekleyebileceğiniz basit bir yol örneği :

Örnek uygulamayı tamamlamak için index.html şablon dosyasını eklemeniz gerekir . İlk önce şablonlarınız için bir dizin oluşturun:

Ardından, templates/index.html dosyasına aşağıdaki içeriği yazın :

Test uygulamasını şununla çalıştırın:

Ardından uygulamaya erişmek için web tarayıcınızda http://localhost:5000 adresine gidin.

Artık bir alıcı e-posta adresi girebilirsiniz ve düğmeyi tıkladığınızda bu adrese bir test e-postası gönderilecektir.

Teslimat sorunlarını giderme

Yukarıdaki Flask uygulamasını kullanarak e-posta göndermede başarılı olmalısınız. Ancak, e-postalarınızın teslim edilememe olasılığı vardır. SendGrid e-postaları eşzamansız olarak gönderdiğinden, çoğu teslimat hatası, gönderen işlemin kendi tarafını tamamladıktan sonra meydana gelir, bu nedenle uygulamanızda bir hata olduğuna dair herhangi bir gösterge olmayacaktır. Bu olursa, e-postanın alıcının e-posta sunucusu tarafından reddedilmiş olması muhtemeldir.

Neyse ki, bunu açıkladığımız gibi bir e-posta göndererek yaşarsanız, olanlarda hata ayıklamanıza yardımcı olması için Twilio SendGrid panosunu kullanabilirsiniz. SendGrid panosundan , Etkinlik'e ve ardından sayfanın ortasındaki "Tüm Etkinliği Göster" düğmesine tıklayın. Bu, göndermeye çalıştığınız tüm e-postaların başarıyla teslim edilip edilmediğini gösteren bir listesini gösterecektir.

Bir example.com adresine gönderilen bir e-postanın teslim edilemediğini yukarıdaki resimde görebilirsiniz. Teslim edilmeyen e-postalar için, alıcının e-posta sunucusu tarafından gönderilen hata yanıtları da dahil olmak üzere ayrıntılı bilgileri görmek için e-postayı tıklayabilirsiniz.

E-postalarınızın neden gönderilmediğini belirledikten sonra, bu teslimat sorunlarını çözmenin birkaç yolu vardır. E-postalarda çok sayıda yazım hatası görürseniz (örneğin @yaho.com veya @gmal.com) , e-posta kişi listenizdeki yaygın yazım hatalarını yakalamak için bir E-posta Doğrulama aracını keşfetmeye değer olabilir.

Yetersiz gönderim itibarı veya engellenen IP adresi de dahil olmak üzere teslimatın başarısız olmasına yol açabilecek birçok başka sorun vardır. 2020 E-posta Teslim Edilebilirlik Kılavuzumuzda e -posta teslim edilebilirliği hakkında her şeyi öğrenin .

Çözüm

Eğiticiden görebileceğiniz gibi, Twilio SendGrid, Flask e-posta gönderme iş akışına kolayca entegre olur ve e-posta göndermeyi basit bir görev haline getirir.

Şimdi Python'daki Flask Framework'ten nasıl e-posta aldığınızı merak ediyorsanız, endişelenmeyin, sizi koruduk! Bu makaleye göz atın: Python için Flask Çerçevesi ile E-postalar Nasıl Alınır .

Ayrıca, Twilio SendGrid ile nasıl entegre edileceğine veya API'lerimiz aracılığıyla nasıl gönderileceğine ilişkin daha fazla kaynak için Bilgi Merkezimize göz atın .