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

如何在Heroku上配置Ruby 3.1.1+Rails 6.1.4应用发送邮件?

Heroku上Rails 6.1.4 + Ruby 3.1.1 免费邮件发送配置指南

针对小发送量需求,下面推荐3种免费SMTP服务的配置方案,全程无需付费插件,所有敏感信息通过Heroku环境变量安全存储:

一、Gmail SMTP(适合个人小量发送,日限100封)

参数获取路径

  1. 开启Google账号的两步验证(必须,否则无法创建应用密码)
  2. 登录Google账号,进入「安全」页面,找到「应用密码」选项,生成一个专门用于Rails应用的密码
  3. SMTP固定参数:服务器smtp.gmail.com,端口587(TLS)

Rails生产环境配置(config/production.rb)

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'your-heroku-app-name.herokuapp.com', # 或你的自定义域名
  user_name:            ENV['GMAIL_USERNAME'],
  password:             ENV['GMAIL_APP_PASSWORD'],
  authentication:       'plain',
  enable_starttls_auto: true
}
# 可选:设置默认发件人
config.action_mailer.default_options = { from: '你的应用 <your-gmail-address@gmail.com>' }

设置Heroku环境变量

在本地终端执行:

heroku config:set GMAIL_USERNAME=你的Gmail邮箱地址
heroku config:set GMAIL_APP_PASSWORD=你生成的应用密码

二、SendGrid免费版(月限100封,适合小型应用)

参数获取路径

  1. 注册SendGrid账号后,进入「Settings > API Keys」
  2. 创建新API Key,权限选择「Mail Send」即可
  3. SMTP固定参数:服务器smtp.sendgrid.net,端口587,用户名固定为apikey

Rails生产环境配置(config/production.rb)

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              'smtp.sendgrid.net',
  port:                 587,
  domain:               'your-heroku-app-name.herokuapp.com',
  user_name:            'apikey',
  password:             ENV['SENDGRID_API_KEY'],
  authentication:       'plain',
  enable_starttls_auto: true
}
config.action_mailer.default_options = { from: '你的应用 <no-reply@你的域名.com>' }

设置Heroku环境变量

heroku config:set SENDGRID_API_KEY=你的SendGrid API Key

三、Mailgun免费层(月限5000封,支持域名发送)

参数获取路径

  1. 注册Mailgun账号,添加你的域名(或使用免费沙箱域名,仅支持发送给已验证收件人)
  2. 进入「Sending > Domains」页面,获取对应域名的SMTP服务器、端口、用户名、密码

Rails生产环境配置(config/production.rb)

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:              ENV['MAILGUN_SMTP_SERVER'],
  port:                 ENV['MAILGUN_SMTP_PORT'],
  domain:               '你的域名.com', # 或沙箱域名
  user_name:            ENV['MAILGUN_SMTP_LOGIN'],
  password:             ENV['MAILGUN_SMTP_PASSWORD'],
  authentication:       'plain',
  enable_starttls_auto: true
}
config.action_mailer.default_options = { from: '你的应用 <no-reply@你的域名.com>' }

设置Heroku环境变量

heroku config:set MAILGUN_SMTP_SERVER=smtp.mailgun.org
heroku config:set MAILGUN_SMTP_PORT=587
heroku config:set MAILGUN_SMTP_LOGIN=你的Mailgun SMTP用户名
heroku config:set MAILGUN_SMTP_PASSWORD=你的Mailgun SMTP密码

验证配置生效

在本地终端运行Heroku Rails控制台测试发送:

heroku run rails c
# 执行以下代码测试邮件发送
ActionMailer::Base.mail(from: '你的发件邮箱', to: '测试收件邮箱', subject: '测试邮件', body: 'Hello World').deliver_now

关键注意事项

  • 所有敏感信息(密码、API Key)必须通过Heroku环境变量存储,绝对不能硬编码到代码提交到版本控制
  • 不同服务的发送限额不同,根据需求选择:Gmail日限100封,SendGrid月限100封,Mailgun沙箱域名仅支持验证收件人,正式域名月限5000封
  • 使用Gmail时,必须开启两步验证才能生成应用密码,否则无法使用SMTP服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:00:59