Django SendGrid如何在EmailMultiAlternatives邮件对象中传递unique_args

问题描述

SendGrid提供了将unique_args与电子邮件一起传递的功能,以便在Event webhook.中标识电子邮件 但是问题是我无法弄清楚如何用Django中的电子邮件发送这些unique_args。 这是我目前正在尝试的方式:

from django.core.mail import EmailMultiAlternatives

header ={
  "unique_args": {
    "customerAccountNumber": "55555","activationAttempt": "1","New Argument 1": "New Value 1","New Argument 2": "New Value 2","New Argument 3": "New Value 3","New Argument 4": "New Value 4"
  }
}

subject,from_email,to = 'hello','EXAMPLE@FROM.com','EXAMPLE@TO.NET'
text_content = 'This is an important message.'
msg = EmailMultiAlternatives(
subject,text_content,[to,],headers=header,)
msg.send()

解决方法

好的,所以终于找到了解决方案。 最后,我弄清楚了如何使用Django EmailMultiAlternatives将unique_args发送到SendGrid。这是我的工作解决方案:

    from django.core.mail import EmailMultiAlternatives
    from smtpapi import SMTPAPIHeader
    header = SMTPAPIHeader()
    header.set_unique_args({'customerAccountNumber': '12345','activationAttempt': '1'})

    subject,from_email,to = 'hello','EXAMPLE@FROM.com','EXAMPLE@TO.NET'
    text_content = 'This is an important message.'
    msg = EmailMultiAlternatives(
        subject,text_content,[to,],headers={'X-SMTPAPI': header.json_string()},)
    msg.send()

您还需要通过pip install smtpapi

安装smtpapi软件包 ,
    from django.core.mail import EmailMultiAlternatives
    from smtpapi import SMTPAPIHeader
    smtp_header = SMTPAPIHeader()
    smtp_header.set_unique_args({'customerAccountNumber': '12345','hello@FROM.com','AABC@TO.NET'
    text_content = 'This is message.'
    msg = EmailMultiAlternatives(
        subject,headers={'X-SMTPAPI': smtp_header.json_string()},)
    msg.send()