提问者:小点点

如何使用动态模板在 Sendgrid 中向单个收件人发送电子邮件并获取发送的 HTML 以进行保留


我目前正在努力将发送网格中的邮件发送与我们的内部CRM系统集成。我正在使用的用例是,当我们的CRM中按下特定按钮时,向单个客户发送自定义电子邮件。我在 sendgrid 中创建了一个包含车把的动态模板,我想用我们 CRM 系统中的值(例如客户名称)替换它。我的目的是在发送电子邮件时使用 sendgrid api endpoint。发送后,我需要获取发送给客户的 HTML,以便它可以保留在我们的数据库中。

“邮件发送”涵盖了其中的大部分要求,但据我了解,邮件发送不提供响应正文(只是一个状态代码),因此我无法获得 HTML 的副本,我想包含插入的值代替车把。

我注意到您可以查询电子邮件活动提要 API 并按主题/电子邮件过滤以找到发送的消息(我尝试过),但响应不包含 HTML。

我还研究了单次发送作为提供响应正文的替代方案,但这只允许您发送到一个片段或联系人列表,并且似乎更适合发送给选定人员的电子邮件,而不仅仅是一个。

谁能建议一种方法让我能够从“邮件发送”选项中实现所有内容,同时保留已发送的电子邮件的 HTML,包括其车把替换?

我暂时一直在邮递员中进行测试 api 调用,所以在这个阶段邮递员实现会很好。我最终将使用 c# ASP.Net Web 表单解决方案,查询 sendgrid api 终结点。我也感谢可能需要通过发送网格后台进行一些配置。

成功的邮递员请求发送“邮件发送”:

POST /v3/mail/send
Base url: https://api.sendgrid.com
{
  "personalizations": [
    {
      "to": [
        {
          "email": "my@toemailgoeshere.co.uk",
          "name": "API Testing"
        }
      ],
      "subject": "API testing successful",
      "dynamic_template_data": {
      "sellerName": "Mr Seller",
      "sellerEmail": "Test @ Test",
      "telNumber": "0123 456 789"
        }
    }
  ],
  "from": {
    "email": "my@fromemailgoeshere.co.uk",
    "name": "API Testing"
  },
  "template_id" : "templateidfordesigntemplategoeshere"
}

在发送网格后台保存的动态模板中包含的 html 片段的虚拟示例:

...
<p>Best Regards,</p><br>
<p>{{sellerName}}</p>
<p>My Dummy Title</p>
<p>{{sellerEmail}}</p>
<p>01234 567 890</p>
<p>My Dummy Company</p>

我想保留在内部CRM系统中的html片段示例:

...
<p>Best Regards,</p><br>
<p>Mr Seller</p>
<p>My Dummy Title</p>
<p>Test @ Test</p>
<p>01234 567 890</p>
<p>My Dummy Company</p>

共1个答案

匿名用户

我找到了解决这个问题的方法,并认为如果另一个人面临同样的问题,我会分享。我发现了一个用于在 .NET 应用程序中使用 Handlebars.js 模板的 nuget 包。[https://github.com/Handlebars-Net/Handlebars.Net][1] 我首先查询了设计 sendgrid api endpoint,以检索包含车把作为响应的模板。然后,我使用 Handlebars.net 为我的 CRM 输入动态值,从而生成我需要保留的 html。我终于通过 api 执行了 sendgrid 邮件发送,使用我刚刚填充的 html 以及邮件发送是否成功错误我在数据库中保留了 html。