ROR生产环境配置SendGrid API Key发邮件出现链接不一致问题
这不是SendGrid API Key的配置问题,如果API Key配置错误,你根本无法通过SendGrid成功发送邮件,生产日志也会返回对应的权限报错。
你遇到的链接替换现象是SendGrid默认开启的*点击跟踪(Click Tracking)*功能导致的:该功能为了统计邮件内链接的点击数据,会自动将邮件中所有原始链接替换为SendGrid的跳转链接,也就是你收到的engage.portalone.io前缀的链接,用户点击后会自动重定向到你原始生成的找回密码地址,本身不影响功能正常使用。
解决方案
如果你不需要点击跟踪功能,或者不希望链接被替换,可以通过以下方式处理:
- 全局关闭点击跟踪:登录SendGrid管理后台,进入跟踪设置页找到「Click Tracking」选项,直接关闭即可,关闭后所有邮件的链接都不会再被替换。
- 针对单封邮件关闭跟踪:如果不想全局禁用该功能,只希望密码重置这类验证邮件不触发链接替换,可以在对应邮件的发送逻辑中添加SendGrid专用的SMTP头配置:
# 以Devise密码重置邮件为例,可在自定义的Devise邮件er中添加以下代码 headers['X-SMTPAPI'] = { filters: { clicktrack: { settings: { enable: 0 } } } }.to_json
- 配置自定义跟踪域名:如果要保留点击跟踪功能,又不想显示SendGrid默认的
engage.portalone.io域名,可以在SendGrid后台配置自定义链路域名,将跳转域名替换为你自己的专属子域名。
额外优化提示:你当前的
config.action_mailer.default_url_options配置没有显式指定协议,如果生产环境使用HTTPS,建议补充protocol: 'https'配置,避免特殊场景下生成HTTP协议的不安全链接:config.action_mailer.default_url_options = { host: ENV['DOMAIN'], port: ENV['PORT'], protocol: 'https' }
内容的提问来源于stack exchange,提问作者Neeraj Amoli
相关产品推荐
相关产品推荐

