当AWS SES(Simple Email Service)无法成功投递消息时,可以通过以下代码示例解决该问题:
import boto3
def send_email(sender, recipient, subject, body):
# 创建SES客户端
ses = boto3.client('ses')
# 发送电子邮件
response = ses.send_email(
Source=sender,
Destination={
'ToAddresses': [
recipient,
],
},
Message={
'Subject': {
'Data': subject,
},
'Body': {
'Text': {
'Data': body,
},
},
},
)
# 检查投递状态
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
print('邮件成功发送!')
else:
print('邮件发送失败:将消息退回给发件人')
# 示例用法
send_email('sender@example.com', 'recipient@example.com', 'Test Subject', 'Test Body')
import boto3
from botocore.exceptions import ClientError
def send_email(sender, recipient, subject, body):
# 创建SES客户端
ses = boto3.client('ses')
try:
# 发送电子邮件
response = ses.send_email(
Source=sender,
Destination={
'ToAddresses': [
recipient,
],
},
Message={
'Subject': {
'Data': subject,
},
'Body': {
'Text': {
'Data': body,
},
},
},
)
print('邮件成功发送!')
except ClientError as e:
# 处理投递失败的情况
error_code = e.response['Error']['Code']
error_message = e.response['Error']['Message']
if error_code == 'MessageRejected':
# 将消息退回给发件人
print('邮件发送失败:将消息退回给发件人')
else:
# 处理其他错误情况
print(f'邮件发送失败:{error_code} - {error_message}')
# 示例用法
send_email('sender@example.com', 'recipient@example.com', 'Test Subject', 'Test Body')
这些示例代码将帮助您与AWS SES进行交互,并通过添加错误处理来处理投递失败的情况。在发生特定错误(例如"MessageRejected")时,可以选择将消息退回给发件人。