我正在尝试通过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)
答案 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)
如果您不打算推出自己的解决方案,可以使用sendwithus和mailjet等服务对电子邮件进行A / B测试。