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'),
)

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

4

1 回答 1

13

你检查过你的 Mandrill API 日志吗?

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

所以,我找到了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
于 2013-06-20T19:58:28.220 回答