Sendgrid Python 库和模板
Sendgrid Python library and templates
我正在尝试使用我在 Sendgrid 上创建的模板。我想要做的是,使用我在 Sendgrid 上创建的模板发送电子邮件(替换替换标签)。
这是我试过的 -
import sendgrid
sg = sendgrid.SendGridClient('<username>', '<password>')
message = sendgrid.Mail()
message.add_to('<to-email-address>')
message.set_subject('My Test Email')
message.add_substitution('customer_link', 'http://my-domain.com/customer-id')
message.add_filter('templates', 'enable', '1')
message.add_filter('templates', 'template_id', '<alphanumeric-template-id>')
message.add_from('<from-email-address>')
status, msg = sg.send(message)
然而,这给了我一个 '{"errors":["Missing email body"],"message":"error"}'
的错误。我尝试添加以下行,但仍然出现相同的错误 -
message.set_html('')
message.set_text('')
所以,我在使用 set_html
后使用的确切代码是 -
import sendgrid
sg = sendgrid.SendGridClient('<username>', '<password>')
message = sendgrid.Mail()
message.add_to('<to-email-address>')
message.set_subject('My Test Email')
message.add_substitution('customer_link', 'http://my-domain.com/customer-id')
message.add_filter('templates', 'enable', '1')
message.add_filter('templates', 'template_id', '<alphanumeric-template-id>')
message.add_from('<from-email-address>')
message.set_html('')
message.set_text('')
status, msg = sg.send(message)
我在这里错过了什么?该库的 python 文档似乎不包含任何内容。
编辑 - 我发现的解决方法之一来自以下答案。我确实设置了 message.set_html(' ')
和 message.set_text(' ')
,基本上就是给了一个空白字符串。虽然这很奇怪,但适用于这种情况。
official documentation it is indeed poor, since it just mentions an example. However, it provides you a link to its Github sendgrid-python 存储库,您可以在其中找到更广泛的示例和代码本身(有时看这个会更快!)。
在此处查找 Github page 中列出的完整示例:
import sendgrid
sg = sendgrid.SendGridClient('YOUR_SENDGRID_USERNAME', 'YOUR_SENDGRID_PASSWORD')
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>')
status, msg = sg.send(message)
#or
message = sendgrid.Mail(to='john@email.com', subject='Example', html='Body', text='Body', from_email='doe@email.com')
status, msg = sg.send(message)
但是,在这种情况下,您使用的是模板,在 Sendgrid 的博客中他们提到:
Do I have to use the body and subject substitution tags in my
template? What If I don’t want to pass any substitution variables in
my email?
No. You can pass a blank value through with your API call and not
specify any variables.
尽管显然不是这样,您需要在 message
实例中附加某种 html 和文本。
所以这里的解决方法就是您发现的:将 html 和文本设置为非空字符串:
message.set_html(' ')
message.set_text(' ')
我正在尝试使用我在 Sendgrid 上创建的模板。我想要做的是,使用我在 Sendgrid 上创建的模板发送电子邮件(替换替换标签)。
这是我试过的 -
import sendgrid
sg = sendgrid.SendGridClient('<username>', '<password>')
message = sendgrid.Mail()
message.add_to('<to-email-address>')
message.set_subject('My Test Email')
message.add_substitution('customer_link', 'http://my-domain.com/customer-id')
message.add_filter('templates', 'enable', '1')
message.add_filter('templates', 'template_id', '<alphanumeric-template-id>')
message.add_from('<from-email-address>')
status, msg = sg.send(message)
然而,这给了我一个 '{"errors":["Missing email body"],"message":"error"}'
的错误。我尝试添加以下行,但仍然出现相同的错误 -
message.set_html('')
message.set_text('')
所以,我在使用 set_html
后使用的确切代码是 -
import sendgrid
sg = sendgrid.SendGridClient('<username>', '<password>')
message = sendgrid.Mail()
message.add_to('<to-email-address>')
message.set_subject('My Test Email')
message.add_substitution('customer_link', 'http://my-domain.com/customer-id')
message.add_filter('templates', 'enable', '1')
message.add_filter('templates', 'template_id', '<alphanumeric-template-id>')
message.add_from('<from-email-address>')
message.set_html('')
message.set_text('')
status, msg = sg.send(message)
我在这里错过了什么?该库的 python 文档似乎不包含任何内容。
编辑 - 我发现的解决方法之一来自以下答案。我确实设置了 message.set_html(' ')
和 message.set_text(' ')
,基本上就是给了一个空白字符串。虽然这很奇怪,但适用于这种情况。
official documentation it is indeed poor, since it just mentions an example. However, it provides you a link to its Github sendgrid-python 存储库,您可以在其中找到更广泛的示例和代码本身(有时看这个会更快!)。
在此处查找 Github page 中列出的完整示例:
import sendgrid
sg = sendgrid.SendGridClient('YOUR_SENDGRID_USERNAME', 'YOUR_SENDGRID_PASSWORD')
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>')
status, msg = sg.send(message)
#or
message = sendgrid.Mail(to='john@email.com', subject='Example', html='Body', text='Body', from_email='doe@email.com')
status, msg = sg.send(message)
但是,在这种情况下,您使用的是模板,在 Sendgrid 的博客中他们提到:
Do I have to use the body and subject substitution tags in my template? What If I don’t want to pass any substitution variables in my email?
No. You can pass a blank value through with your API call and not specify any variables.
尽管显然不是这样,您需要在 message
实例中附加某种 html 和文本。
所以这里的解决方法就是您发现的:将 html 和文本设置为非空字符串:
message.set_html(' ')
message.set_text(' ')