Django Sendgrid身份验证错误

时间:2015-01-04 19:44:19

标签: python django sendgrid

我正在尝试通过SendGrid API对自己进行身份验证,以便使用模板Engine API(为A / B测试创建它们),但无论如何,我都会收到401未经授权的错误。有人可以帮忙吗?难道我做错了什么 ?这是我的代码:

@receiver(models.signals.post_save, sender=Template)
def create_sendgrid_template(sender, instance, created, *args, **kwargs):
    url = 'https://api.sendgrid.com/v3/templates'
    sendgrid_data = {
        "name": "example_template",
    }
    if created:
        request = urllib2.Request(url)
        base64string = base64.encodestring(
            '%s:%s' % (
                SENDGRID_API_USER,
                SENDGRID_API_PASSWORD)
            ).replace('\n', '')
        request.add_header("Authorization", "Basic %s" % base64string)
        result = urllib2.urlopen(request)

1 个答案:

答案 0 :(得分:2)

尝试对数据进行编码并将其添加到请求中 - 我怀疑您是在进行GET而不是POST。请参阅urllib howto。还值得验证您的凭据是否正确。

@receiver(models.signals.post_save, sender=Template)
def create_sendgrid_template(sender, instance, created, *args, **kwargs):
url = 'https://api.sendgrid.com/v3/templates'
sendgrid_data = {
    "name": "example_template",
}
data = json.dumps(sendgrid_data)

if created:
    request = urllib2.Request(url, data)
    base64string = base64.encodestring(
        '%s:%s' % (
            SENDGRID_API_USER,
            SENDGRID_API_PASSWORD)
        ).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)
    request.add_header('Content-type', 'application/json')        
    result = urllib2.urlopen(request)

如果您不打算推出自己的解决方案,可以使用sendwithusmailjet等服务对电子邮件进行A / B测试。