当使用AWS SendRawEmail操作时,如果提供的收件人中存在非法地址,会返回一个InvalidParameterValue错误。
为了解决这个问题,你可以在发送邮件之前对每个收件人的地址进行验证。下面是一个使用AWS SDK for Python(Boto3)的示例代码,演示了如何验证收件人地址并排除非法地址:
import boto3
def validate_email_addresses(email_addresses):
"""
验证并排除非法的收件人地址
"""
ses_client = boto3.client('ses')
valid_email_addresses = []
for email_address in email_addresses:
response = ses_client.verify_email_identity(EmailAddress=email_address)
if response['VerificationStatus'] == 'Success':
valid_email_addresses.append(email_address)
else:
print(f"非法的收件人地址: {email_address}")
return valid_email_addresses
def send_raw_email(from_address, to_addresses, subject, body):
"""
发送邮件
"""
ses_client = boto3.client('ses')
# 验证并排除非法的收件人地址
valid_to_addresses = validate_email_addresses(to_addresses)
if len(valid_to_addresses) > 0:
response = ses_client.send_raw_email(
Source=from_address,
Destinations=valid_to_addresses,
RawMessage={
'Data': f"From: {from_address}\n"
f"To: {', '.join(valid_to_addresses)}\n"
f"Subject: {subject}\n"
f"\n"
f"{body}"
}
)
print("邮件发送成功")
else:
print("没有有效的收件人地址")
# 示例用法
from_address = 'sender@example.com'
to_addresses = ['recipient1@example.com', 'recipient2@example.com', 'invalid_address']
subject = '测试邮件'
body = '这是一封测试邮件。'
send_raw_email(from_address, to_addresses, subject, body)
在上面的示例中,我们定义了两个函数:validate_email_addresses
和send_raw_email
。validate_email_addresses
函数用于验证并排除非法的收件人地址,它使用SES的verify_email_identity
方法来验证每个地址。如果验证成功,则将地址添加到有效地址列表中;否则,打印出非法地址。send_raw_email
函数用于发送邮件,它首先调用validate_email_addresses
函数来获取有效的收件人地址列表,然后使用send_raw_email
方法发送邮件。如果存在有效的收件人地址,将打印出"邮件发送成功";否则,将打印出"没有有效的收件人地址"。
在示例代码中,我们将发送邮件的代码封装在了一个函数中,以便在需要时进行调用。你可以根据自己的需求来修改和扩展这段代码。