问题描述
我正在尝试在 SendGrid 动态模板中添加社交媒体链接,特别是它是通过 LinkedIn 共享内容的链接。社交媒体链接调用 RESTful API,因此需要提供许多参数,很像表单。问题是,除非这些参数是“百分比编码”,否则 SendGrid 的编辑器会产生错误。
这是一个 URL,旨在使电子邮件收件人能够将成就证书添加到他们的 LinkedIn 个人资料中。它是在 these instructions 之后创建的。
@H_404_5@https://www.linkedin.com/profile/add?startTask=FS_Cert&name=Certificate%20Of%20Achievement&organizationId=26650704&issueYear=2021&issueMonth=6&certId=20210622-001&certUrl=https://certificates.nextid.com/certificate?id%3D291b71fb-79cb-4db4-bfa6-108d0c9eb2d6
这个 URL 几乎可以工作,但是 - 因为它包含一个嵌套 URL 作为最后一个参数 - 我需要将最后的“=”更改为“%3D”。通过这个小的修改,我可以打开像 Thunderbird 这样的电子邮件客户端并将其粘贴为 HTML(即作为链接的目标),并且可以将证书添加到收件人的 LinkedIn 个人资料中。我还可以添加图片,使其成为可点击的按钮。
但是,如果我使用此 URL 并将其粘贴到 SendGrid 中的动态模板中,与号“&”会导致编辑器反对并显示错误:“期望的命名实体,没有”。我将它们更改为 %26 并以这个修改后的 URL 结束,这不会在 SendGrid 编辑器中导致任何错误。
@H_404_5@https://www.linkedin.com/profile/add?startTask=FS_Cert%26name=Certificate%20Of%20Achievement%26organizationId=26650704%26issueYear=2021%26issueMonth=6%26certId=20210622-001%26certUrl=https://certificates.nextid.com/certificate?id%3D291b71fb-79cb-4db4-bfa6-108d0c9eb2d6
不幸的是,当您将其粘贴到浏览器中时,此 URL 不再有效,并且在 SendGrid 电子邮件中创建的链接无法正确解析。执行了 RESTful API 调用,但没有传递参数。
有没有人有关于如何将 RESTful API URL 插入 SendGrid 电子邮件而不导致编辑器拒绝它的建议。也许是一些 Javascript?
解决方法
此问题已通过正确的 URL 转义字符和关闭 SendGrid 链接跟踪得到解决。
- 因为我们在 HTML 中分隔参数(SendGrid 编辑器使用 HTML),'&' 的正确转义字符是 '&'而不是“%26”。它只会成为发送的电子邮件中的 URL。我们仍然需要使用百分比替换将最后一个参数中的“=”更改为 %3D,因为等号嵌入在 certUrl 参数中的 URL 中。我们还需要将空格转换为“%20”。所以最后修改的链接应该是:
https://www.linkedin.com/profile/add?startTask=FS_Cert&name=Certificate%20Of%20Achievement&organizationId=26650704&issueYear=2021&issueMonth=6&certId=20210622-001&certUrl=https://certificates.nextid.com/certificate?id%3D291b71fb-79cb-4db4-bfa6-108d0c9eb2d6
- 但是,由于 SendMail 链接跟踪功能修改了 URL,因此这会变得混乱(混乱)。 URL 参数总是被截断而不是传递到 LinkedIn Profile 表单,这显然是由于在浏览器中重写了 SendGrid 跟踪 URL。所以我在链接标签中添加了参数“clicktracking=off”,现在它正在工作(并且更容易调试)。这是最终版本:
<a clicktracking=off
href="https://www.linkedin.com/profile/add?startTask=FS_Cert&name=Certificate%20Of%20Achievement&organizationId=26650704&issueYear=2021&issueMonth=6&certId=20210622-001&certUrl=https://certificates.nextid.com/certificate?id%3D291b71fb-79cb-4db4-bfa6-108d0c9eb2d6">