Flask İle Mail Gönderme (Flask-mail)
Flask kullanarak maillerinizi kolayca gönderebilir, hatta toplu mailler atabilirsiniz. Üstelik gerekli yapılandırma ayarlarını yapmak düşündüğünüzden daha kolay olacak. Şimdi hemen yeni dersimize başlayalım ve Flask ile mail gönderelim.
Bir önceki yazımız olan “404 Hata Sayfası Yönlendirmesi” konusundan hemen sonra arayı soğutmadan “Flask Mail Gönderimi” ile derslerimizin sonuna yaklaşmış bulunuyoruz. Bu dersimizde Flask-mail
kütüphanesini kullanarak basitçe ve hızlıca mailler gönderebileceğiz. Öyleyse hemen kütüphanemizi projemize dahil ederek dersimize başlayalım.
1. Flask-mail Kütüphanesinin Dahil Edilmesi
Kütüphanemizi pip
kullanarak indirelim öncelikle:
pip install Flask-Mail
veya direkt repodan çekerek son sürümü kullanarabilirsiniz:
git clone https://github.com/mattupstate/flask-mail.git
cd flask-mail
python setup.py install
Gerekli yüklemeleri yaptıktan sonra artık projemize kütüphaneyi dahil edebiliriz.
from flask_mail import Mail, Message
2. Konfigürasyon Tanımlarını Ayarlama
Kütüphanemizi projemize dahil etmemizin ardından mail sunucu ayarlarını tanımlayabilmek için gerekli konfigürasyon bilgilerini yazmaya sıra geldi. Kullandığınız mail sunucuya ait bağlantı bilgilerini kullanarak aşağıdaki kodları kendi projenizde düzenleyebilirsiniz. Bu bilgileri nereden bulacağını bilmeyenler için aşağıdaki örneği Gmail üzerinden yapacağım. Böylece sizde sadece Gmail bilgilerinizi girerek hemen kullanmaya başlayabilirsiniz. Fakat Gmail yerine özel mail kutusu kullananlar, mail sunucularının STMP
ayarlarını girerek kullanabilirler.
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'xxxx@gmail.com'
app.config['MAIL_PASSWORD'] = '******'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)
NOT: Gmail ile mail gönderimi yapmak istiyorsanız yukarıdaki ayarlara ek olarak Gmail hesabınızdan şu linke giderek “Daha az güvenli uygulamalar için erişim
” ayarında “Aç
” seçeneğini işaretlemelisiniz.
3. Mail Gönderme Fonksiyonunun Yazılması
Gerekli ayarlamaları yaptıktan sonra artık ilk testimizi gerçekleştirebiliriz. Bunun için hemen bir route yazıp küçük bir mail gönderimi yapalım.
@app.route('/mail-gonder/')
def mailgonder():
try:
msg = Message("Merhaba Kerteriz Blog Takipçisi!",
sender="gonderici@gmail.com",
recipients=["alici@email.com"])
msg.body = "Merhaba!\nPython ve Flask ile programlama nasıl gidiyor?"
mail.send(msg)
return 'Mail başarıyla gönderildi!'
except Exception, e:
return(str(e))
HTML Mail İçeriği: Eğer mesajınızda HTML ögeleri yer alacaksa msg.body
yerine msg.html
kullanabilirsiniz. Örneğin:
msg.html = "<strong>Merhaba!</strong><br><em>Python ve Flask ile programlama nasıl gidiyor?<em>"
Toplu Mail Gönderimi: Yukarıdaki örnekte sadece bir alıcı belirttik. Siz daha fazla mail adresine aynı anda toplu mail göndermek istiyorsanız aşağıdaki gibi kod yapısı kullanabilirsiniz:
liste = ["xx@mail.com","yy@mail.com","zz@mail.com"]
with mail.connect() as conn:
for mail in liste:
mesaj = '...'
baslik = "Merhaba!"
msg = Message(recipients=[mail],
body=mesaj,
subject=baslik)
conn.send(msg)
Mail Eki Yükleme: Göndereceğiniz maillere isterseniz dosya da ekleyebilirsiniz. Böylece eklerle beraber daha zengin bir mail gönderimi yapabilirsiniz. Bunun için öncelikle Konfigürasyon kısmında MAIL_ASCII_ATTACHMENTS ayarını True ayarlamalısınız.
with app.open_resource("resim.png") as fp:
msg.attach("resim.png", "image/png", fp.read())
4. Kod Önizlemesi
Son durumda index.py
dosyamız şu şekilde olacaktır:
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'xxxx@gmail.com'
app.config['MAIL_PASSWORD'] = '******'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)
@app.route('/mail-gonder/')
def mailgonder():
try:
msg = Message("Merhaba Kerteriz Blog Takipçisi!",
sender="gonderici@gmail.com",
recipients=["alici@email.com"])
msg.body = "Merhaba!\nPython ve Flask ile programlama nasıl gidiyor?"
mail.send(msg)
return 'Mail başarıyla gönderildi!'
except Exception as e:
return(str(e))
if __name__ == '__main__':
app.run(debug = True)
Artık /mail-gonder/
sayfasına girip mailimizi gönderebiliriz.
Tebrikler! Maili başarıyla gönderdik. Takıldığınız veya sormak istediğiniz bir konu olursa aşağıya yorum bırakabilirsiniz.