Django-SES不考虑mail_managers中的DEFAULT_FROM_EMAIL

时间:2012-07-10 12:36:51

标签: django amazon-ses django-email

我正在使用django-ses使用AWS Simple E-mail Service发送电子邮件。我使用send_mail()发送时没有问题,但使用mail_managers()设置在设置中设置的同一电子邮件地址,我收到MessageRejected例外。

这是一个演练:

$ python manage.py ses_email_address -l
Fetching list of verified emails:
gez@gez.com

通过python shell:

>>> settings.DEFAULT_FROM_EMAIL
'gez@gez.com'
>>> settings.MANAGERS
(('omat', 'om@tekno.org'),)
>>> send_mail('test', 'test', 'gez@gez.com', ['om@tekno.org'])
1
>>> mail_managers('test', 'test')
BotoServerError: BotoServerError: 400 Bad Request
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">
  <Error>
    <Type>Sender</Type>
    <Code>MessageRejected</Code>
    <Message>Email address is not verified.</Message>
  </Error>
  <RequestId>66269bb3-ca86-11e1-80db-5b89cf7a6356</RequestId>
</ErrorResponse>

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这不是由django-ses引起的。 mail_adminsmail_managers都使用SERVER_EMAIL设置作为发件人地址而非DEFAULT_FROM_EMAILhttps://docs.djangoproject.com/en/1.4/topics/email/#mail-managers

答案 1 :(得分:0)

我很难在Amazon SES中收到500条错误电子邮件。此过程可能会帮助其他人。

要检查的事情:

  • 它在本地可用! (我使用了django.core.mail.backends.console.EmailBackend

    • 这意味着您可以生成应用程序错误,并且会在正在运行的服务器的控制台中看到它
  • ADMINS需要定义

  • 检查是否存在过滤器,以防止在DEBUG = False时发送邮件

  • 如果它在本地不起作用,请运行调试器并逐步完成AdminEmailHandler。这样可以弄清楚为什么不发送电子邮件。

如果它们都在本地运行,请部署到AWS。

  • 检查您的应用程序可以发送电子邮件(!),例如:

    • 触发内部电子邮件,例如重置密码
    • 通过EC2实例连接到应用并调用send_email()
  • 登录到SES控制台并检查是否已发送电子邮件(在“发送统计信息”下)

  • 触发500错误-发送统计信息也应该增加,表明SES发送了电子邮件。

  • 是否收到电子邮件?

    • 检查垃圾邮件文件夹
    • 目标电子邮件地址是否在SES中的“电子邮件地址”下列出(如果您的SES帐户位于沙箱中,则为必需)
  • 我必须确保将DEFAULT_FROM_EMAILSERVER_EMAIL设置为在SES中已验证的电子邮件地址