【问题标题】:AWS SES failing with "Recipient count exceeds 50." on individual recipient emailsAWS SES 因“收件人计数超过 50”而失败。在个别收件人电子邮件上
【发布时间】:2022-01-08 08:27:38
【问题描述】:

我们在 AWS Lambda 中循环 160 个电子邮件地址,并调用 SES 的 send_raw_email() API 调用,每次调用一个地址。 50 次循环后,我们得到错误“收件人计数超过 50”。但每次通话只有一个收件人。电子邮件中的其他信息,除了“收件人:”,在通话之间是相同的。我们这样做是为了防止收件人看到其他收件人的地址。

电子邮件是否在 SES 进行批量处理? (我们是如何达到这个极限的?)

我们怎样才能克服这个错误?

添加代码:

for item in recipients['Items']:
    RECIPIENT = item['email']['S']
    
    msg['To'] = RECIPIENT

    try:
        #Provide the contents of the email.
        response = ses.send_raw_email(
            Source=SENDER,
            Destinations=[
                RECIPIENT
            ],
            RawMessage={
                'Data':msg.as_string(),
            }
        )
    # Display an error if something goes wrong. 
    except ClientError as e:
        print("failed to send email: ",e.response['Error']['Message'])
        return {
        'statusCode': 400,
        'body': json.dumps(e.response['Error']['Message'])
    }
    else:
        print("Email sent! Message ID:"),
        print(response['MessageId'])

【问题讨论】:

  • 您是否尝试过将批量收件人指定为密件抄送?
  • 通过准确记录发送的内容来检查您发送给 SES 的内容。也许 TO 字段被附加,而不是被替换?你能给我们看一些简化的代码吗?
  • 添加了代码 sn-p
  • 快速测试显示 TO 行上的列表不断增长。不错的电话。现在如何清除邮件的 TO 列表?
  • 你的缩进是否正确?它正在循环处理所有收件人,然后只调用一次send_raw_email()。这不会导致这个特定问题,但它看起来是错误的。

标签: amazon-web-services email amazon-ses


【解决方案1】:

问题是库在分配时通过添加到“收件人”列表来运行,而不是替换。所以需要一个“del msg['To']”。

for item in recipients['Items']:
    RECIPIENT = item['email']['S']

del msg['To']
msg['To'] = RECIPIENT
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-20
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2016-02-08
    相关资源
    最近更新 更多