Sendgrid Python 库和模板

Sid*_*rth 5 python sendgrid

我正在尝试使用我在 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)
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个错误,即'{"errors":["Missing email body"],"message":"error"}'. 我尝试添加以下几行,但仍然出现相同的错误 -

message.set_html('')
message.set_text('')
Run Code Online (Sandbox Code Playgroud)

所以,我在使用后使用的确切代码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)
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?该库的 python 文档似乎不包含任何内容。

编辑 - 我发现的一种解决方法来自以下答案。我确实设置了message.set_html(' ')and message.set_text(' '),也就是说,给出一个空白字符串。不过,这很奇怪,但适用于这种情况。

fed*_*qui 4

官方文档确实很差,因为它只是提到了一个例子。不过,它为您提供了一个指向其 Github sendgrid-python存储库的链接,您可以在其中找到更广泛的示例和代码本身(有时查看此内容会更快!)。

\n\n

在此处查找Github 页面中列出的完整示例:

\n\n
import sendgrid\n\nsg = sendgrid.SendGridClient(\'YOUR_SENDGRID_USERNAME\', \'YOUR_SENDGRID_PASSWORD\')\n\nmessage = sendgrid.Mail()\nmessage.add_to(\'John Doe <john@email.com>\')\nmessage.set_subject(\'Example\')\nmessage.set_html(\'Body\')\nmessage.set_text(\'Body\')\nmessage.set_from(\'Doe John <doe@email.com>\')\nstatus, msg = sg.send(message)\n\n#or\n\nmessage = sendgrid.Mail(to=\'john@email.com\', subject=\'Example\', html=\'Body\', text=\'Body\', from_email=\'doe@email.com\')\nstatus, msg = sg.send(message)\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

然而,在这种情况下,您使用的是模板,并且在 Sendgrid 的博客中他们提到:

\n\n
\n

模板引擎演示 \xe2\x80\x93 问答

\n\n

我是否必须在我的\n 模板中使用正文和主题替换标签?如果我不想\xe2\x80\x99 不想在我的电子邮件中传递任何替换变量怎么办?

\n\n

否。您可以通过 API 调用传递空白值,而不指定\n 任何变量。

\n
\n\n

尽管显然它不是这样的,您需要在实例中附加某种 html 和文本message

\n\n

因此,这里的解决方法就是您发现的:将 html 和文本设置为非空字符串:

\n\n
message.set_html(\' \')\nmessage.set_text(\' \')\n
Run Code Online (Sandbox Code Playgroud)\n