2015-05-02 46 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標頭。該名稱來自SendGrid的Web API存在之前,它實際上是作爲SMTP標頭髮送的。