Django + Heroku + Mandrill邮件管理员(mail_admins())无法工作,无论是手动还是在触发500错误时。

6
我有一个在Heroku上使用Mandrill作为SMTP的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 = (
    ('My Name', 'myaddress@gmail.com'),
)

我已经检查了我的垃圾邮件文件夹,里面什么都没有。我在设置中漏掉了什么吗?还是其他问题?

错误日志显示了什么? - karthikr
1个回答

13

您检查过Mandrill API日志了吗?

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

所以,我找到了https://github.com/brack3t/Djrill,并且即将安装它。如果它“只是起作用”,我会告诉您的。

编辑:安装djrill并按照文档进行后,我正在收到错误消息的失败API调用 - for some reason from_email显示为“root@localhost”。

当我使用替换Djrill Sender的已接受域的电子邮件进行GitHub页面上显示的shell测试时,它可以正常工作:

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

是的,缺少SERVER_MAIL设置肯定是问题所在。 - Rias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接