如果您的应用程序需要发送大量的电子邮件,可能会遇到AWS SES API的速率限制。为了避免这种情况,您可以使用以下代码示例传递批量发送电子邮件的方法。
import boto3
def send_email_batch(emails):
ses = boto3.client('ses')
email_messages = []
for email in emails:
to_addr = email['to']
from_addr = email['from']
subject = email['subject']
body_text = email['body_text']
body_html = email['body_html']
email_messages.append({
'Destination': {
'ToAddresses': [to_addr]
},
'Message': {
'Body': {
'Text': {
'Charset': 'UTF-8',
'Data': body_text
},
'Html': {
'Charset': 'UTF-8',
'Data': body_html
}
},
'Subject': {
'Charset': 'UTF-8',
'Data': subject
}
},
'Source': from_addr
})
ses.send_bulk_templated_email(
Destinations=[message['Destination'] for message in email_messages],
Source=from_addr,
Template='MyEmailTemplate',
DefaultTemplateData='{"subject":"My Default Subject"}',
TemplateData=[json.dumps({'body_text': message['Message']['Body']['Text']['Data'],
'body_html': message['Message']['Body']['Html']['Data'],
'subject': message['Message']['Subject']['Data']
}) for message in email_messages]
)
在上面的代码中,我们使用AWS SDK for Python(boto3)初始化AWS SES客户端。我们为要发送的每个电子邮件构建消息,并将它们附加到邮件消息列表中。可以使用send_bulk_templated_email方法传递电子邮件批,该批将在内部使用AWS SES API以并行方式发送电子邮件。
注意:在使用send_bulk_templated_email方法时,必须对消息进行模板化