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.
(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şturfrom flask_mail import Mail
app = Flask(__name__)
# ...
mail = Mail(app)
# İkinci bir terminalde:
(venv) $ aiosmtpd -n -c aiosmtpd.handlers.Debugging -l localhost:8025
# Birinci terminalde:
export MAIL_SERVER=localhost
export MAIL_PORT=8025
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)