Zae*_*eem 3 python amazon-web-services flask amazon-ses
我刚开始在Flask上使用Python.我想了解使用Amazon SES从Flask发送电子邮件的最佳方式是什么?
我见过boto,但它是所有亚马逊服务的接口.我也看过其他一些自定义示例.
在Flask中发送电子邮件的最佳,简单和有效方法是什么?
谢谢.
小智 8
我有类似的情况.您应该使用Amazon SES API发送格式化电子邮件.
您可以按照建议使用boto.但这不像boto3那样更新.更多信息在这里.
这就是我成功的原因.
在您的密码中包含以下密钥app.config:
# Amazon Web Services credentials
AWS_ACCESS_KEY_ID = 'your access key id'
AWS_SECRET_ACCESS_KEY = 'your secret access key'
# Amazon Simple Email Service
SES_REGION_NAME = 'us-west-2' # change to match your region
SES_EMAIL_SOURCE = 'verified.email@example.com'
Run Code Online (Sandbox Code Playgroud)
注意:电子邮件来源(发件人)必须是经过验证的电子邮件地址,如SES控制台中所配置.
然后,在代码中的某处,定义一个这样的函数:
import boto3
def send_email(app, recipients, sender=None, subject='', text='', html=''):
ses = boto3.client(
'ses',
region_name=app.config['SES_REGION_NAME'],
aws_access_key_id=app.config['AWS_ACCESS_KEY_ID'],
aws_secret_access_key=app.config['AWS_SECRET_ACCESS_KEY']
)
if not sender:
sender = app.config['SES_EMAIL_SOURCE']
ses.send_email(
Source=sender,
Destination={'ToAddresses': recipients},
Message={
'Subject': {'Data': subject},
'Body': {
'Text': {'Data': text},
'Html': {'Data': html}
}
}
)
Run Code Online (Sandbox Code Playgroud)
当然,ses.send_email如果需要更复杂的消息,可以添加更多参数.
然后你可以发送这样的电子邮件:
recipients = ['john.doe@example.com']
subject = 'Thanks for registering'
# You can render the message using Jinja2
html = render_template('email.html', name='John Doe')
send_email(current_app,
recipients=recipients,
subject=subject,
html=html
)
Run Code Online (Sandbox Code Playgroud)
改进:
您可以使用线程将电子邮件作为异步任务发送.Miguel Grinberg在The Flask Mega-Tutorial,Part XI:Email Support中对此进行了更好的解释.这实际上就是我正在使用的.
或者,也许更好,你可以使用Celery.但由于您在亚马逊生态系统中,我会使用SQS.
其他选择包括:
send_mail功能.| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |