如何使用 sendgrid API 在 django 中使用设计的模板?

how to use designed template in django using sendgrid API?

我已将发送网格与我的 Django 应用程序集成,邮件也已成功发送。但现在我想从我的 django 应用程序发送带有设计模板的电子邮件。我也阅读了文档,但不知道如何以编程方式使用它。这是我第一次使用发送网格。请任何人帮助我找出如何从 Django 应用程序发送发送网格模板的方法。

您可以使用 SendGrid 的模板引擎将模板存储在 SendGrid 中。然后,您可以在通过 SendGrid API 发送电子邮件时引用该模板 ID,您可以 see an example of that code in the sendgrid-python library.

这是一个完整的示例,它使用 SendGrid API 键(您可以通过 reading this guide 了解如何进行设置):

import sendgrid

sg = sendgrid.SendGridClient('sendgrid_apikey')

message = sendgrid.Mail()
message.add_to('John Doe <john@email.com>')
message.set_subject('Example')
message.set_html('Body')
message.set_text('Body')
message.set_from('Doe John <doe@email.com>')

# This next section is all to do with Template Engine

# You pass substitutions to your template like this
message.add_substitution('-thing_to_sub-', 'Hello! I am in a template!')

# Turn on the template option
message.add_filter('templates', 'enable', '1')

# Tell SendGrid which template to use
message.add_filter('templates', 'template_id', 'TEMPLATE-ALPHA-NUMERIC-ID')

# Get back a response and status
status, msg = sg.send(message)

你首先需要Sendgrid-Python接口:

pip install sendgrid

之后试试这个:

import os
from sendgrid.helpers.mail import Mail
from sendgrid import SendGridAPIClient

FROM_EMAIL = 'Your_Name@SendGridTest.com'

# update to your dynamic template id from the UI
TEMPLATE_ID = 'd-d027f2806c894df38c59a9dec5460594'

# list of emails and preheader names, update with yours
TO_EMAILS = [('your_email@domain.com', 'Sourabh MbeforL'),]


def SendDynamic():
    message = Mail(
        from_email=FROM_EMAIL,
        to_emails=TO_EMAILS)

    # pass custom values for our HTML placeholders
    message.dynamic_template_data = {
        'subject': 'SendGrid Development',
        'place': 'New York City',
        'event': 'Twilio Signal'
    }
    message.template_id = TEMPLATE_ID
    try:
        sg = SendGridAPIClient(os.environ.get('YOUR_SENDGRID_API_KEY')) ## (^_^) This face is just to grab your attention for api key needed
        response = sg.send(message)
        code, body, headers = response.status_code, response.body, response.headers
        print(f"Response code: {code}")
        print(f"Response headers: {headers}")
        print(f"Response body: {body}")
        print("Dynamic Messages Sent!")
    except Exception as e:
        print("Error: {0}".format(e))
    return str(response.status_code)