2015-05-02 3 views
4

Я хочу интегрировать шаблон, который я создал в движке шаблонов Sendgrid с моим приложением python. Я прочитал документацию и исходный код на GitHub, но он дает мне ошибку, как это:Как интегрировать шаблоны sendgrid с приложением python? `

HTTP 400; JSON in headers is valid but incompatible

Мой исходный код:

import sendgrid 
import json 
import os 


mail_to = raw_input("Reciever's Mail(Name <email>): ") 
subject = raw_input('Subject: ') 
mail_from = raw_input("Sender Mail(Name <email>): ") 


API_USER = os.getenv('API_USER') 
API_KEY = os.getenv('API_KEY') 

sg = sendgrid.SendGridClient(API_USER, API_KEY) 

plaintext = \ 
    """ 
     <strong>This mail is only for testing.</strong> 
    """ 
htmlbody = \ 
    """ 
     Html Data 
    """ 

header_json = { 
    'filters': { 
     'templates': { 
      'setting': { 
       'enabled': '1', 
       'template_id': '6967292-382-43aa-89dd-41fcd09b3fec' 
      } 
     } 
    } 
} 

message = sendgrid.Mail(headers={'X-SMTPAPI': header_json}) 
message.add_to(mail_to) 
message.set_subject(subject) 
message.set_html(htmlbody) 
message.set_text(plaintext) 
message.set_from(mail_from) 

status, msg = sg.send(message) 

print "HTTP STATUS", status 

msg = json.loads(msg) 

if status == 400: 
    print msg 

Может кто-нибудь сказать мне, как интегрировать мой шаблон с мое приложение?

ответ

4

Поддержка шаблонов встроена в библиотеку SendGrid-Python. Из README:

message = sendgrid.Mail() 
message.add_filter('templates', 'enable', '1') 
message.add_filter('templates', 'template_id', 'TEMPLATE-ALPHA-NUMERIC-ID') 

Это также лучше, чтобы позволить smtpapi-python библиотека построить заголовок SMTPAPI для вас. Это фактически передается как параметр POST, а не HTTP-заголовок. Это имя происходит до того, как появился веб-API SendGrid, и он был фактически отправлен как заголовок SMTP.

Смежные вопросы