如何使用 Flask-Security-Too 配置 AWS SES 来发送电子邮件? (ValueError:未配置电子邮件扩展名)

问题描述 投票:0回答:1

我正在尝试从 SMTP 切换到 AWS SES,以便在 Flask 应用程序中发送电子邮件,该应用程序使用 Flask-Security-Too 进行用户身份验证和电子邮件管理。

我已实施以下配置更改来集成 AWS SES:

app.config['SECURITY_MAIL_UTIL'] = SESMailUtil(app)
app.config['SECURITY_EMAIL_SENDER'] = read_config("EMAIL", 'notifications').get("sender_name")
app.config['SECURITY_EMAIL_SUBJECT_REGISTER'] = 'Welcome! Confirm your email'

SESMailUtil class:
from app_utils import get_ses_client
from flask_security.mail_util import MailUtil

class SESMailUtil(MailUtil):
    def __init__(self, app=None):
        super().__init__(app)
    def send_mail(self, template, subject, recipient, sender, body, html, user, **kwargs):
        ses_client = get_ses_client()
        try:
            response = ses_client.send_email(
                Source=sender,
                Destination={
                    'ToAddresses': [recipient]
                },
                Message={
                    'Subject': {'Data': subject},
                    'Body': {
                        'Text': {'Data': body},
                        'Html': {'Data': html}
                    }
                }
            )
            print(f"Email sent! Message ID: {response['MessageId']}")
        except Exception as e:
            print(f"Error sending email: {e}")

但是,当我运行代码时,遇到以下错误: 引发 ValueError("未配置电子邮件扩展名") ValueError:未配置电子邮件扩展名

python-3.x flask amazon-ses flask-security
1个回答
0
投票

正确的配置变量是 SECURITY_MAIL_UTIL_CLS - 传入类名,它将作为 Flask-security init_app() 的一部分进行实例化。您还可以将类名作为构造函数的一部分传递。

© www.soinside.com 2019 - 2024. All rights reserved.