2016-08-24 1 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) 
Смежные вопросы