ruby-on-rails - 在 Heroku 上使用 Rails ActionMailer 时如何避免 500 内部服务器错误
问题描述
我正在尝试在我的 Web 应用程序中注册时向用户发送一封电子邮件,该应用程序是在后端使用 Rails 构建的,在前端使用 React-Redux。我在本地服务器上测试时使用了一个 gem letter_opener
,一切似乎都运行良好。当我在 Heroku 上实时尝试时,我得到了 500 错误,我不确定出了什么问题。
我尝试阅读 ActionMailer 文档,但似乎没有提到任何这样的问题。
UserMailer中的方法:
def welcome_email(user)
@user = user
mail(to: @user.email, subject: "Welcome")
end
相关代码UsersController
:
def create
# ...
email = UserMailer.welcome_email(@user)
email.deliver_now # This line throws the error
# ...
end
Heroku 日志中的错误:
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
我希望这封电子邮件能够送达,或者至少会有更多信息性的错误消息。我不确定为什么 Rails 会查看 localhost 的 25 端口。
解决方案
我不确定为什么 Rails 会查看 localhost 的 25 端口。
ActionMailer默认为localhost:25
,您可能只更改了开发配置。
Errno::ECONNREFUSED(连接被拒绝 - “localhost”端口 25 的连接(2))
Heroku 不提供 SMTP 服务器,而且localhost
. 使用您选择的电子邮件插件或其他第三方邮件服务。
您可能必须修改config/environments/production.rb
以使用您选择的任何邮件服务。
推荐阅读
- arrays - 正则表达式匹配给定数据中的最后一个值
- twitter-bootstrap - 移动相邻的网格单元(没有完全重新排序)
- reactjs - 在 windows 上配置 package.json
- phpspreadsheet - 读取包含图像的 Excel 工作表失败
- node.js - 异步系列类型错误:无法读取未定义的属性“0”
- sql - SQL:对长格式数据进行计算的有效方法
- xcode - 如何为 Xcode 启用暗模式
- angular - 在 Angular 的 ng-content 中使用时忽略 ngValue
- javascript - 如何在 MVC 5 中更新模型
- javascript - 新日期返回无效日期野生动物园