Mengirim Email dari Aplikasi Python Flask Dengan Twilio SendGrid
Diterbitkan: 2020-06-30Menentukan apakah akan membangun atau membeli infrastruktur email Anda bukanlah keputusan kecil. Apakah Anda memiliki bandwidth untuk mendukung masalah keterkiriman? Apakah Anda dapat mengikuti pengiriman Anda saat Anda tumbuh? Apa yang lebih hemat biaya? Meskipun ada sejumlah faktor yang perlu dipertimbangkan, itu adalah percakapan untuk panduan lain (seperti panduan Build it atau Buy It ).
Sebagai gantinya, tutorial ini akan menunjukkan kepada Anda betapa mudahnya mengirim email melalui layanan email khusus. Kami akan menjelaskan cara mengirim email melalui Twilio SendGrid menggunakan framework Flask dan ekstensi Flask-Mail .
Alat tutorial
Untuk mengikuti tutorial ini Anda memerlukan item berikut:
- Python 3.6 atau lebih baru. Jika sistem operasi Anda tidak menyediakan juru bahasa Python 3.6+, Anda dapat membuka python.org untuk mengunduh penginstal.
- Akun Twilio SendGrid gratis. Jika Anda baru menggunakan Twilio SendGrid, daftar untuk akun percobaan . Dengan akun percobaan, Anda dapat mengirim 40.000 email selama 30 hari, lalu 100 email per hari selamanya.
Menyiapkan dengan SendGrid
Sebelum Anda dapat mengirim email melalui SendGrid, Anda harus membuat kunci API yang akan Anda gunakan untuk mengautentikasi akses ke layanan SendGrid. Masuk ke akun SendGrid Anda, lalu klik di bilah sisi kiri pilih "Pengaturan" dan kemudian Kunci API . Klik "Buat Kunci API."
Berikan kunci API Anda nama yang ramah (tetap sederhana dan lugas sehingga Anda ingat apa yang dirujuk!). Untuk tutorial ini, kami memilih nama Flask-Mail . Kami memilih "Akses Penuh" untuk izin, yang memberi kunci kemampuan untuk melakukan semua fungsi pengiriman email yang diperlukan (akses ke titik akhir GET, PATCH, PUT, DELETE, dan POST). Jika Anda lebih suka membuat kunci yang memiliki izin yang sangat spesifik, pilih "Akses Terbatas" dan konfigurasikan akses Anda sesuai kebutuhan.
Ketika Anda mengklik tombol "Buat & Lihat", Anda akan disajikan dengan kunci Anda. Kunci ini tidak akan pernah ditampilkan lagi, jadi Anda perlu mengkliknya untuk menyalinnya ke clipboard. Kemudian tempel di dokumen yang aman sehingga Anda dapat menggunakannya nanti. Jika Anda kehilangan kunci, Anda harus membuat yang baru. Setelah Anda menyimpan kunci Anda, Anda dapat mengklik tombol "Selesai".
Membangun lingkungan Python
Sekarang setelah kita menyelesaikan pengaturan, kita dapat menyelami cara mengirim email dari aplikasi Python Flask. Kita akan mulai dengan membuat direktori baru di komputer Anda yang disebut *twilio-sendgrid-tests* (atau yang serupa), dan kemudian membuat lingkungan virtual Python baru di dalamnya.
Untuk pengguna Mac dan Unix, perintahnya adalah:
Untuk pengguna Windows, perintahnya adalah:
Selanjutnya, instal Flask, Flask-Mail dan python-dotenv di lingkungan virtual Anda:
Menyiapkan aplikasi Flask
Mari kita buat aplikasi Flask dan Flask-Mail starter di file app.py :
Di sini Anda dapat melihat cara mengkonfigurasi Flask-Mail dengan benar untuk menggunakan layanan SMTP SendGrid. Pengaturan penting adalah:
- Server email harus `smtp.sendgrid.net`.
- Port surat harus 587. (Apakah Anda tahu port mana yang digunakan kapan? Lihat posting blog ini. )
- TLS harus diaktifkan. (Apa perbedaan antara SSL dan TLS ?)
- Otentikasi diperlukan. Untuk nama pengguna, Anda harus menggunakan `apikey` (ini sama untuk semua akun SendGrid). Kata sandinya adalah kunci API SendGrid yang Anda buat di bagian sebelumnya.
Untuk aplikasi Flask ini, kami menambahkan pengaturan di atas dalam kunci konfigurasi yang tepat untuk ekstensi Flask-Mail. Untuk alasan keamanan, kami mengimpor kunci API dari variabel lingkungan bernama `SENDGRID_API_KEY`. Kami juga menetapkan alamat email pengirim default dari variabel lingkungan. Ini adalah alamat email yang akan muncul di bidang "dari" semua email secara default.
Buat file .env dengan dua variabel yang diperlukan:
Flask akan secara otomatis mengimpor variabel yang didefinisikan dalam file .env (selama Anda telah menginstal paket python-dotenv), jadi ini cukup untuk memasukkan kedua variabel ini ke dalam konfigurasi aplikasi Flask.
Mengirim email percobaan
Mari kita lihat bagaimana Anda dapat mengirim sendiri email percobaan dari shell Python:
Perhatikan bahwa kita memulai shell Python dengan perintah `flask shell`. Ini akan memastikan bahwa aplikasi Flask yang kita buat di app.py diimpor.
Setelah berada di shell, impor instance `mail` yang kita buat di app.py dan kelas `Message` dari Flask-Mail:
Selanjutnya buat instance `Pesan`:
Langkah terakhir adalah mengirim email ini:
Dan itu saja! Jika semuanya berjalan sesuai rencana, email akan tiba di kotak masuk Anda hanya dalam beberapa detik.
Jika Anda ingin melihat contoh rute Flask yang mengintegrasikan fungsi ini, berikut adalah contoh sederhana yang dapat Anda tambahkan di bagian bawah app.py :
Untuk melengkapi aplikasi contoh, Anda perlu menambahkan file template index.html . Pertama buat direktori untuk template Anda:
Dan kemudian tulis konten berikut di file templates/index.html :
Jalankan aplikasi pengujian dengan:
Kemudian arahkan ke http://localhost:5000 di browser web Anda untuk mengakses aplikasi.
Anda sekarang dapat memasukkan alamat email penerima dan ketika Anda mengklik tombol, email percobaan akan dikirim ke alamat itu.
Memecahkan masalah pengiriman
Dengan menggunakan aplikasi Flask di atas, Anda seharusnya berhasil mengirim email. Namun, ada kemungkinan email Anda gagal terkirim. Karena SendGrid mengirim email secara asinkron, sebagian besar kesalahan pengiriman terjadi setelah pengirim menyelesaikan sisi transaksinya, sehingga aplikasi Anda tidak akan memiliki indikasi bahwa telah terjadi kesalahan. Jika hal ini terjadi, maka kemungkinan email tersebut ditolak oleh server email penerima.
Untungnya, jika Anda mengalami ini dengan mengirim email seperti yang telah kami jelaskan, Anda dapat menggunakan dasbor Twilio SendGrid untuk membantu Anda men-debug apa yang terjadi. Dari dasbor SendGrid , klik Aktivitas , lalu pada tombol “Tampilkan Semua Aktivitas” di tengah halaman. Ini akan menampilkan daftar semua email yang Anda coba kirim, yang menunjukkan apakah email tersebut berhasil dikirim atau tidak.
Anda dapat melihat pada gambar di atas bahwa email yang dikirim ke alamat example.com gagal terkirim. Untuk email yang tidak terkirim, Anda dapat mengklik email tersebut untuk melihat informasi mendetail, termasuk respons kesalahan yang dikirim oleh server email penerima.
Setelah Anda menentukan mengapa email Anda tidak terkirim, ada beberapa cara untuk menyelesaikan masalah pengiriman tersebut. Jika Anda melihat sejumlah kesalahan ejaan dalam email (misalnya @yaho.com atau @gmal.com), mungkin ada baiknya menjelajahi alat Validasi Email untuk mengetahui kesalahan ejaan umum di daftar kontak email Anda.
Ada banyak masalah lain yang dapat menyebabkan pengiriman gagal, termasuk reputasi pengiriman yang buruk atau alamat IP yang diblokir. Pelajari semua tentang keterkiriman email di Panduan Keterkiriman Email 2020 kami .
Kesimpulan
Seperti yang Anda lihat dari tutorial, Twilio SendGrid dengan mudah terintegrasi ke dalam alur kerja pengiriman email Flask awal, membuat pengiriman email menjadi tugas yang sederhana.
Jika Anda sekarang bertanya-tanya bagaimana Anda menerima email dari Flask Framework dengan Python, jangan khawatir, kami siap membantu Anda! Lihat artikel ini: Cara Menerima Email dengan Kerangka Flask untuk Python .
Dan, untuk sumber daya selengkapnya tentang cara berintegrasi dengan Twilio SendGrid atau mengirim melalui API kami, lihat Pusat Pengetahuan kami .