如何移除SendGrid脚本发送HTML邮件中链接的额外域名前缀?
解决SendGrid脚本发送邮件时链接被附加跳转前缀的问题
问题说明
用bash脚本通过SendGrid API发送邮件时,邮件内的链接会被自动加上跳转前缀(例如http://url8393.mydomain.com/ls/click?upn=SDFGOSODFGJSGJOADJFGDSJFGSDJKFG...),现在需要仅让这个脚本发送的邮件移除该前缀,同时保留其他邮件的原有设置。原脚本代码如下:
payload='{ "personalizations": [ { "to": [ { "email": "'"$TO_EMAIL"'" } ], "subject": "'"$SUBJECT"'" } ], "from": { "email": "'"$FROM_EMAIL"'" }, "content": [ { "type": "text/html", "value": "<!doctype html><html><head></head><body>Hello You link <a href=\"replacement_link\">Click</a></body></html>" } ], }' updated_payload=$(echo -e "${payload/replacement_link/"$url"}") curl -v --request POST \ --url https://api.sendgrid.com/v3/mail/send \ --header "Authorization: Bearer $SENDGRID_API_KEY" \ --header "Content-Type: application/json" \ --data "$updated_payload"
解决方案
这个跳转前缀是SendGrid的链接跟踪功能自动生成的,要仅针对当前脚本的邮件关闭该功能,只需在请求的JSON payload中添加tracking_settings字段,明确关闭链接跟踪即可,不会影响账户全局的邮件设置。
修改后的payload代码如下:
payload='{ "personalizations": [ { "to": [ { "email": "'"$TO_EMAIL"'" } ], "subject": "'"$SUBJECT"'" } ], "from": { "email": "'"$FROM_EMAIL"'" }, "content": [ { "type": "text/html", "value": "<!doctype html><html><head></head><body>Hello You link <a href=\"replacement_link\">Click</a></body></html>" } ], "tracking_settings": { "click_tracking": { "enable": false, "enable_text": false } } }'
参数说明
click_tracking.enable: false:关闭HTML格式邮件中的链接跟踪click_tracking.enable_text: false:关闭纯文本格式邮件中的链接跟踪(如果后续脚本需要发送纯文本邮件,也能保证链接不被修改)
修改后,该脚本发送的邮件链接将保持原始状态,其他未添加该字段的SendGrid邮件请求会继续沿用原有设置。
内容的提问来源于stack exchange,提问作者Viji
相关产品推荐
相关产品推荐

