2016-08-24 108 views
0

我正在通過SMTP API調度電子郵件。這是我曾嘗試uptil現在:SMTPAPI無效頭文件:send_at必須是時間戳

from smtpapi import SMTPAPIHeader 
from django.core.mail import send_mail 
from django.core.mail import EmailMultiAlternatives 
from django.template.loader import get_template 
from django.template import Template, Context 

def campaign_email(lg_user, template): 

    user = lg_user.id 
    email = user.email 
    fname = lg_user.id.first_name 
    lname = lg_user.id.last_name 
    mobile = lg_user.contact_no 
    purchase = lg_user.active_user_subjects.values_list('subject', flat=True) 
    expiry = str(lg_user.active_user_subjects.values_list('at_expiry', flat=True)) 

    filename = '/tmp/campaign_mailer.html' 
    opened_file = open(filename, "r").read() 

    temp = Template(opened_file) 

    c = Context({'fname': fname, 'lname': lname, 'subject': subject, 'email': email, 
       'mobile': mobile, 'purchase': purchase, 'expiry': expiry}) 

    header = SMTPAPIHeader() 

    html_content = temp.render(c) 

    send_at = {"send_at": 1472058300} 
    header.set_send_at(send_at) 

    msg = EmailMultiAlternatives(subject, html_content, sender, [email], 
           headers={'X-SMTPAPI': header.json_string()}) 

    msg.attach_alternative(html_content, "text/html") 
    msg.send(fail_silently=True) 

爲了檢查,如果我的頭(其上印刷header.json_string()解析到此:

{ 
    "send_at": { 
     "send_at": 1472051700 
    } 
} 

)是有效還是無效,我檢查了https://sendgrid.com/docs/Utilities/smtpapi_validator.html,結果是完全有效的。

但是,我從sendgrid的支持得到的失敗郵件說明失敗的原因:send_at必須是時間戳。我相信,在documentation中,明確指出時間戳應該是UNIX格式 - 這正是我爲send_at密鑰提供的值。

那麼,我該如何解決這個錯誤?

回答

1

set_send_at()需要一個整數參數,但是您要傳遞一個字典({"send_at": 1472058300})。這是無效的並導致錯誤。

將其更改爲:

header.set_send_at(1472058300) 
相關問題