gpt4 book ai didi

python - 在 Amazon AWS 上用 Python 捕获 SMTP 异常

转载 作者:行者123 更新时间:2023-11-28 22:58:58 25 4
gpt4 key购买 nike

我正在使用 Python 和 smtplib 通过 Amazon SES 发送电子邮件。如何捕获特定的发送错误?

例如,Amazon SES 可能会告诉我“此地址已列入黑名单”或“您已超出您的费率”或“您已超出您的流量配额”,我想对这些消息采取行动。

我有一个片段可以捕获黑名单(我认为),如下所示。我真的不知道如何调试这些东西,因为异常只会出现在重型环境中,如果我触发异常,我担心亚马逊会影响我的配额。

try:
msg = EmailMultiAlternatives(subject, plain, from_address, [to_address])
msg.attach_alternative(html, "text/html")
msg.send()
except smtplib.SMTPResponseException as e:
error_code,error_msg = e.smtp_code, e.smtp_error
if error_code==554 and error_msg=='Message rejected: Address blacklisted.':
# do appropriate action for blacklisting
else:
# do appropriate action for throttling
else:
# log any other SMTP exceptions

最佳答案

您可以使用 Amazon SES Mailbox Simulator生成黑名单错误。

发送电子邮件至 blacklist@simulator.amazonses.com 以验证您的应用程序是否正确处理了由此产生的错误。如果您使用邮箱模拟器地址,您的退回统计数据不会受到影响。无论您的 Amazon SES 账户处于沙盒模式还是生产模式,您都可以运行这些测试。

邮箱模拟器目前不允许您测试限制或配额异常。但是,您的异常处理代码应该足以处理这些异常。我建议您使用 find() 检查异常字符串,以适应错误消息的任何添加。

if error_code == 554 and error_msg.find('Address blacklisted') >= 0:
# handle blacklisting
else:
...

作为引用,以下是您可以检查的一些 SMTP 响应:

  • 黑名单是“554 Message rejected: Address blacklisted”
  • 未验证的地址是“554 邮件被拒绝:电子邮件地址未验证。”
  • 超出的发送速率是“454 节流失败:超出最大发送速率。”
  • Exceeded Quota 是“454 Throttling failure: Daily messages quota exceeded.”

关于python - 在 Amazon AWS 上用 Python 捕获 SMTP 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com