Ruby on rails 在哪里可以阅读完整的手册来为Rails配置SMTP?

Ruby on rails 在哪里可以阅读完整的手册来为Rails配置SMTP?,ruby-on-rails,devise,smtp,actionmailer,exim4,Ruby On Rails,Devise,Smtp,Actionmailer,Exim4,我是Rails的新手,我有一些问题。 我用Desive插件安装了一个简单的应用程序,通过Capistrano将它部署到生产服务器(Linode上的Ubuntu,nginx+passenger)上。现在尝试发送电子邮件(密码恢复、电子邮件确认等) 但它确实起了作用 我在/environments/production.rb中有这些行 config.action_mailer.default_url_options = { :host => "myhostname.com" } con

我是Rails的新手,我有一些问题。 我用Desive插件安装了一个简单的应用程序,通过Capistrano将它部署到生产服务器(Linode上的Ubuntu,nginx+passenger)上。现在尝试发送电子邮件(密码恢复、电子邮件确认等)

但它确实起了作用

我在/environments/production.rb中有这些行

  config.action_mailer.default_url_options = { :host => "myhostname.com" }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
当我尝试从我的应用程序发送电子邮件时,我收到500个错误:“很抱歉,但出了问题。 “(由乘客)。 在log/production.log中

Net::SMTPServerBusy (451 4.3.0 Temporary system failure. Please try again later.)
我使用exim4作为邮件服务器。我还尝试安装sendmail并进行更改

config.action_mailer.delivery_method = :sendmail
电子邮件开始发送,但应用程序工作非常缓慢

所以,我的问题是:我需要如何处理我的问题,以及在哪里可以阅读完整的手册或文档来配置exim4以使用rails应用程序


谢谢。

根据ActionMailer官方文件第5章和第5.1章:

我们可以看到,没有“:exim4”选项可用作“delivery\u method”

所以我建议“欺骗”ActionMailer,他正在使用sendmail(尽管他将使用exim4)。 在config/environments/production.rb文件中使用以下配置:

config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = {
  :location => '/usr/sbin/exim4',
  :arguments => '-i'
}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
参数与以下exim4选项匹配:

  • -t选项使邮件的收件人从邮件中的收件人:、抄送:、密件抄送::标题行获取,而不是从 从命令参数
  • -i选项防止仅包含点的行终止消息。只有文件的结尾才会这样做
不要使用-t选项

为了正确配置Exim4 deamon,我建议您使用以下快速操作:

我强烈建议您在第一个屏幕上选择“smarthost”而不是“Internet站点”

这是因为互联网的邮件提供商(gmail、yahoo等)在默认情况下会阻止来自互联网上未知IP地址的任何电子邮件(当然包括您的新服务器IP地址)

如果您选择“smarthost”,您的服务器将必须连接到现有(和受信任的)邮件服务器(gmail、yahoo等),以便转发自己的电子邮件。 这将确保您的电子邮件到达目的地

==更新

由于rails(3.2)的某些版本,我在使用-t optin时遇到了问题。 我的/var/www/my_app/log/production.log中出现以下错误:

Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25)
所以我删除了-t选项,因为rails不再在消息中包含To:字段,而是在命令行中发送它

我发现其他开发人员在这个应用程序上也有类似的问题:


我希望这能帮助人们让rails与exim4一起工作。

Debian 8+Rails4.2.6+Exim版本4.84\u 2

我在config/environments/production.rb文件中添加了:

并从delivery_方法和sendmail_设置参数中清除(注释):

这就是工作


对我来说,道格拉斯的答案不起作用。

exim4能自己工作吗?i、 没有Rails应用程序?试着将它与普通的电子邮件客户端(如Thunderbird)一起使用,看看它是否有效。是的,exim有效。我试着回应“这是一个测试。”| mail-s测试someone@somedomain.com. 事实上,我不记得我到底做了什么,但问题已经解决了。我想我只是重新启动ubuntu。
config.action_mailer.default_options     = { from: 'mybox@hostname.com' }
config.action_mailer.default_url_options = { host: 'hostname.com' }
config.action_mailer.perform_deliveries    = true
config.action_mailer.raise_delivery_errors = true
# config.action_mailer.delivery_method = :sendmail
# config.action_mailer.sendmail_settings = {
#     :location => '/usr/sbin/exim4',
#     :arguments => '-i'
# }