在哪里可以阅读完整的手册来配置SMTP for Rails?
我在Rails新手,我有一些问题。 我使用Devise插件设置了简单的应用程序,通过Capistrano将其部署在生产服务器(Linode上的Ubuntu,nginx +乘客)上。 现在尝试发送电子邮件(密码恢复,电子邮件确认等来自Devise)。
但它确实有效。
我在/enviroments/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章: http : //guides.rubyonrails.org/action_mailer_basics.html
我们可以看到没有’:exim4’选项可用作’delivery_method’。
所以我建议“欺骗”ActionMailer他正在使用sendmail(尽管他会使用exim4)。 在config / enviroments / 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选项使消息的收件人从消息中的To:,Cc:和Bcc:标题行而不是命令参数中获取。
- -i选项可防止仅包含点的行终止消息。 只有文件结束才能这样做。
不要使用-t选项。
为了正确配置您的Exim4守护程序,我建议您快速使用该方法: http ://noosfero.org/Development/MailSending
我强烈建议您在第一个屏幕而不是“Internet站点”上选择“ smarthost ”。
这是因为互联网的邮件提供商(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:字段,而是在命令行中发送它。
我发现其他一些开发者在这个应用程序上有类似的问题: gitlabhq
我希望这能帮助人们使用exim4。
Debian 8 + Rails4.2.6 + Exim版本4.84_2
我添加到我的config / enviroments / production.rb文件中:
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
从delivery_method和sendmail_settings参数中清除(注释):
# config.action_mailer.delivery_method = :sendmail # config.action_mailer.sendmail_settings = { # :location => '/usr/sbin/exim4', # :arguments => '-i' # }
它的工作!
对我来说道格拉斯的回答没有用。