当使用send_mail方法时,Djrill抛出'TypeError'

时间:2012-10-05 19:44:34

标签: django

我目前正在尝试将mandrill整合到这个基于Django的电子邮件网站中。 Djrill是Django推荐的软件包,代替默认的SMTP /电子邮件后端,将电子邮件传递给Mandrill帐户。

当我尝试通过运行此命令来测试这个新后端是否正常工作时:

send_mail('Test email', body, 'noreply@*********.com', [user.email], fail_silently=False)

它会抛出以下错误:http://pastebin.ca/2239978

有人能指出我的错误吗?

1 个答案:

答案 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块之外无效。

Djrill中的

An open issue提到发送失败并链接一个据说可以修复它的分支。我怀疑Djrill没有得到很好的支持,你可能会完全尝试使用fork或其他解决方案。