2016-08-24 5 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) 
関連する問題