【发布时间】:2017-06-14 15:31:01
【问题描述】:
我一直在研究这个问题,但被困在下面的 Python 中。
https://github.com/miohtama/LibertyMusicStore
它使用 Django,后者又通过 Python 包 Djrill 使用 Mandrill 来处理电子邮件。它已设置并正常工作,但在更新 SSL 证书后,注意到注册不再有效,但生成了“500 服务器错误”消息。此事件的日志复制在下面。
一个新的 MailChimp 帐户已添加 Mandrill,我创建了一个新的 API 密钥并更新了 MANDRILL_API_KEY 条目。在 Mandrill 域上,SPF 和 DKIM 已经过验证,但仍然无法正常工作。我不熟悉这个软件,如果你知道怎么做,我相信这很简单。如果我查看 Mandrill API 日志,它们完全是空白的,这让我觉得我在某处遗漏了一些配置,比如更改 API 密钥不足以更改 Mandrill 帐户。
这是提交表单时产生问题的页面。
http://music.artbyte.me/musician-sign-up/
关于我做错了什么有什么想法吗?
INFO 2017-01-28 09:07:48,278 connectionpool 86.142.174.63 - POST /signup/ HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 Starting new HTTP connection (1): mandrillapp.com
ERROR 2017-01-28 09:07:48,418 base - - - - -" - Internal Server Error: /signup/
Traceback (most recent call last):
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/core/handlers/base.py", line 111, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/db/transaction.py", line 394, in inner
return func(*args, **kwargs)
File "./tatianastore/signup.py", line 116, in signup
File "./tatianastore/signup.py", line 103, in create_user
File "./tatianastore/emailer.py", line 22, in mail_store_owner
msg.send()
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/django/core/mail/message.py", line 286, in send
return self.get_connection(fail_silently).send_messages([self])
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/djrill/mail/backends/djrill.py", line 68, in send_messages
sent = self._send(message)
File "/srv/django/applebytestore/venv/lib/python3.4/site-packages/djrill/mail/backends/djrill.py", line 119, in _send
(msg_dict['to'], msg_dict['from_email']))
djrill.exceptions.MandrillAPIError: Mandrill API response 500
Failed to send a message to [{'name': '', 'email': 'n@n.com', 'type': 'to'}], from no-reply@libertymusicstore.net
【问题讨论】:
-
尝试创建一个我们可以创建的更小的示例,而无需设置整个
LibertyMusicStore项目。如果您手动运行send_email命令(如Djrill readme)会发生什么?请注意,文档警告说 Djrill 已近一年无人维护,并推荐使用 django-anymail。 -
我已将项目移至 AnyMail 但得到相同的响应,我已从 tatianastore/creditor.py 和 tatianastore/emailer.py 中删除了对 tatianastore/emailer.py 中 mail_store_owner 的两个调用,但是仍然收到相同的消息。由于迁移到 AnyMail 至少应该产生不同的错误,因此大部分内容不会更新。重新启动 nginx 并删除了所有 .pyc 文件,但仍然收到相同的消息。我不是 Python 编码员,所以对此感到非常困惑。
-
正如我之前所说,我会通过手动运行自述文件中的
send_email命令来确保您的设置正确无误。目前,尚不清楚问题出在您的配置中还是您链接到的存储库中。您目前没有容易重现的错误,因此它不适合堆栈溢出。 -
你帮了很多忙,我对 Python 的世界一无所知,所以任何东西都是奖励。迁移到 AnyMail 解决了这个问题,我遵循了迁移步骤。重新启动服务器更新了所有内容。我猜 Djrill 没有跟上变化,AnyMail 只是使用迁移步骤,但几乎相同。如果您写下“移至 AnyMail”,我会将您的答案标记为正确。