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

Rails 5集成Sendgrid:使用html.erb发邮件时ERB代码不生效

解决Rails 5 + SendGrid邮件ERB不解析及发送失败问题

我之前也碰到过一模一样的情况,ERB代码原封不动出现在邮件里真的很头疼,而且按官方教程配置发不出邮件大概率是SMTP设置的小细节没搞对,下面给你一步步解决:

一、先搞定ERB模板不解析的问题

核心原因是你可能没有让Rails的ActionMailer来渲染模板,而是直接读取了静态文件内容。正确的做法是利用Rails自带的模板渲染机制:

1. 确保邮件类正确配置

你的邮件类要继承ActionMailer::Base,并在邮件方法里指定渲染逻辑:

# app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
  default from: 'your-verified-email@example.com' # 必须用SendGrid验证过的发件邮箱

  def test_erb_email(recipient_email)
    # 这里会自动去app/views/user_mailer/目录找test_erb_email.html.erb模板
    mail(to: recipient_email, subject: 'ERB Render Test') do |format|
      format.html
    end
  end
end

2. 手动渲染模板(如果需要自定义内容)

如果需要手动获取渲染后的HTML内容再发送,别用File.read,要用render_to_string触发Rails的ERB解析:

html_content = render_to_string(
  template: 'user_mailer/test_erb_email',
  layout: false # 不需要应用布局的话加这个参数
)
mail(
  to: 'recipient@example.com',
  subject: 'Custom Rendered Email',
  html_body: html_content
)

二、修复SendGrid配置导致的邮件发送失败问题

官方教程的配置在Rails 5里有个极易踩的坑,按下面的配置来:

1. 配置Gemfile

确保添加SendGrid的官方gem:

# Gemfile
gem 'sendgrid-ruby'

然后执行bundle install完成安装。

2. 配置环境文件(比如config/environments/production.rb)

最关键的点:user_name必须是固定值'apikey',不是你的SendGrid账户名:

# config/environments/production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'smtp.sendgrid.net',
  port: 587,
  domain: 'your-app-domain.com', # 比如你的Heroku域名或自定义域名
  user_name: 'apikey', # 固定值,别改成自己的用户名!
  password: ENV['SENDGRID_API_KEY'], # 把API密钥存在环境变量里,别硬编码
  authentication: :plain,
  enable_starttls_auto: true
}

开发环境的话,在config/environments/development.rb里做同样配置即可。

3. 测试发送

在Rails控制台里调用邮件方法测试:

UserMailer.test_erb_email('your-test-email@example.com').deliver_now

如果有报错,看控制台的错误信息排查——常见问题比如API密钥不正确、发件邮箱没在SendGrid验证、域名未配置等。

三、额外注意事项

  • 确保你的html.erb模板放在正确目录:app/views/[你的邮件类名小写]/,比如user_mailer对应的目录就是app/views/user_mailer/。
  • 不要跳过ActionMailer直接用SendGrid的Ruby API发送,那样Rails的模板渲染机制不会生效,ERB自然不会被解析。

内容的提问来源于stack exchange,提问作者Noel Delgado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:30:00