You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1 Mailer邮件链接显示异常(带方括号)的原因及解决

问题原因及修复方案

原因分析

出现这个问题的核心原因是链接URL缺少HTTP/HTTPS协议头:

  • 你定义的@url是'www.johndcowan.com/living_muay_thai',没有带http://或https://协议前缀。Rails的link_to虽然会生成<a>标签,但邮件客户端无法识别无协议的字符串为有效可点击URL,最终将其解析为纯文本格式(也就是你看到的方括号包裹的样式)。
  • 其他ERB标签能正常渲染,说明模板的ERB解析机制没问题,问题只出在URL的有效性上。

修复方法

方法1:直接给URL添加协议头

修改邮件发送器中的@url定义,补充完整的协议前缀:

# 邮件发送器代码修改
def new_student_badge_email
  @student = params[:student]
  @badge = params[:badge]
  @admin = params[:admin]
  # 添加https协议头
  @url = 'https://www.johndcowan.com/living_muay_thai'
    
  mail(to: @student.email, subject: 'LMT: You Earned a New Badge')
end

方法2:使用Rails路由助手生成标准化绝对URL(推荐)

如果你的Rails项目中已经定义了对应页面的路由,建议用路由助手的_url后缀方法生成带协议和域名的完整URL,避免硬编码:

# 假设路由定义为:get 'living_muay_thai', to: 'students#dashboard'
def new_student_badge_email
  @student = params[:student]
  @badge = params[:badge]
  @admin = params[:admin]
  # 使用路由助手生成完整URL,指定协议和主机
  @url = living_muay_thai_url(protocol: 'https', host: 'www.johndcowan.com')
    
  mail(to: @student.email, subject: 'LMT: You Earned a New Badge')
end

修改后,link_to生成的<a href="https://xxx">标签会被邮件客户端正确识别为可点击链接,不再显示为纯文本格式。

内容的提问来源于stack exchange,提问作者John Cowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:35:19