Django + Heroku + Mandrill mail_admins()无法手动或由500错误触发

时间:2013-06-12 23:35:32

标签: python django mandrill

我使用Mandrill for SMTP在Heroku上有一个Django(v1.4)站点。我在设置文件中包含所有必需的值:

      
  • EMAIL_HOST_PASSWORD
  •   
  • EMAIL_HOST_USER
  •   
  • EMAIL_HOST
  •   
  • EMAIL_PORT
  •   
  • SERVER_EMAIL(设置为真实地址,而不是root @ localhost)

我可以从客户端手动使用send_messages()定期发送电子邮件。但是,如果500个错误没有发送电子邮件,并且在客户端中调用mail_admins不会产生任何错误,但也不会发送电子邮件。

这是我的日志记录设置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

我的ADMINS:

ADMINS = (
    ('My Name', 'myaddress@gmail.com'),
)

我检查了我的垃圾邮件文件夹,那里什么都没有。我在设置中遗漏了什么吗?或其他什么?

1 个答案:

答案 0 :(得分:13)

您是否检查过您的Mandrill API日志?

我遇到了同样的问题并注意到电子邮件正在发送到Mandrill API(因为我在settings.py中设置了Mandrill的smtp设置),但是在API调用中from_email和from_name是空的。 / p>

所以,我发现https://github.com/brack3t/Djrill即将安装它。我会告诉你它是否“正常”。

编辑:所以在安装djrill并遵循文档后,我收到错误消息的API调用失败 - 由于某种原因,from_email显示为“root @ localhost”。

当我执行github页面上显示的shell测试时(我的Mandrill帐户替换了Djrill Sender,来自接受域的电子邮件),它可以工作:

from django.core.mail import send_mail

send_mail("It works!", "This will get sent through Mandrill",
    "Djrill Sender <djrill@example.com>", ["to@example.com"])

事实证明,我的默认“发件人”电子邮件设置名称很混乱。它叫做SERVER_EMAIL。请参阅https://docs.djangoproject.com/en/1.3/ref/settings/#std:setting-SERVER_EMAIL

因此,settings.py中的以下内容修复了我的问题

SERVER_EMAIL = myname@myMandrillApprovedDomain.com