我目前正在尝试将mandrill整合到这个基于Django的电子邮件网站中。 Djrill是Django推荐的软件包,代替默认的SMTP /电子邮件后端,将电子邮件传递给Mandrill帐户。
当我尝试通过运行此命令来测试这个新后端是否正常工作时:
send_mail('Test email', body, 'noreply@*********.com', [user.email], fail_silently=False)
它会抛出以下错误:http://pastebin.ca/2239978
有人能指出我的错误吗?
答案 0 :(得分:0)
<强>更新强>
正如@DavidRobinson在评论中提到的那样,您没有从mandrill API身份验证调用中获得成功的响应。您应该仔细检查您的API密钥。
如果这是正确的,请尝试使用curl将{"key": <your api key>, "email": <your from email>}
发布到MANDRILL_API_URL + "/users/verify-sender.json"
并查看是否获得200。
这样的事情:
curl -d key=1234567890 -d email=noreply@mydomain.com http://mandrill.whatever.com/user/verify-sender.json
原始回答:
Djrill中还存在一个问题,即阻止有用的错误消息传播。堆栈跟踪的最后一行是问题所在。
这是从the source获取的整个open
方法:
def open(self, sender):
"""
"""
self.connection = None
valid_sender = requests.post(
self.api_verify, data={"key": self.api_key, "email": sender})
if valid_sender.status_code == 200:
data = json.loads(valid_sender.content)
if data["is_enabled"]:
self.connection = True
return True
else:
if not self.fail_silently:
raise
如果没有异常参数,请查看它是如何说raise
的?该语法仅允许在except
块内,并引发当前正在处理的异常。它在except
块之外无效。
An open issue提到发送失败并链接一个据说可以修复它的分支。我怀疑Djrill没有得到很好的支持,你可能会完全尝试使用fork或其他解决方案。