Giriş


Bu bölümde uygulamaya e-posta gönderme desteği eklenecek ve bu altyapı üzerine kullanıcıların unutulan şifrelerini sıfırlayabileceği bir şifre sıfırlama özelliği inşa edilecek. Güvenli sıfırlama bağlantıları için JWT (JSON Web Token) kullanılacak.


Flask-Mail Kurulumu

(venv) $ pip install flask-mail
(venv) $ pip install pyjwt

Bölüm 7'de tanımlanan e-posta yapılandırma değişkenleri (MAIL_SERVER, MAIL_PORT vb.) Flask-Mail tarafından doğrudan kullanılır; ek yapılandırma gerekmez.

app/__init__.py — Mail Nesnesini Oluştur

from flask_mail import Mail

app = Flask(__name__)
# ...
mail = Mail(app)

Test İçin Sahte SMTP Sunucusu

# İkinci bir terminalde:
(venv) $ aiosmtpd -n -c aiosmtpd.handlers.Debugging -l localhost:8025

# Birinci terminalde:
export MAIL_SERVER=localhost
export MAIL_PORT=8025

E-posta Gönderme Yardımcı Fonksiyonu

app/email.py adında yeni bir modül oluştur:

from flask_mail import Message
from app import mail

def send_email(subject, sender, recipients, text_body, html_body):
    msg = Message(subject, sender=sender, recipients=recipients)
    msg.body = text_body
    msg.html = html_body
    mail.send(msg)

Şifre Sıfırlama İsteği