首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生产中rails电子邮件出错,生产控制台中未发生此错误

生产中rails电子邮件出错,生产控制台中未发生此错误
EN

Stack Overflow用户
提问于 2014-03-03 12:50:03
回答 1查看 167关注 0票数 0

我有一个rails应用程序,在生产中有电子邮件授权问题。错误是:

代码语言:javascript
复制
Net::SMTPAuthenticationError (530-5.5.1 Authentication Required. Learn more at ):
app/models/user.rb:53:in `send_password_reset'
app/controllers/password_resets_controller.rb:15:in `create'

我的电子邮件设置是正确的,它们在中转和开发方面都是正确的,此外,在控制台中运行从生产服务器执行的命令也是正确的。

只有在通过我的生产服务器的web接口运行它时,问题才会出现,Phussion客运或nginx是否会导致这种错误?

我已经尝试过多次重新启动服务器,但无法弄清楚为什么它不能工作。据我所知,在生产far服务器中执行的命令(例如,phusion乘客)和在生产控制台中执行的命令(例如RAILS_ENV=production rails c)之间不应该有任何区别,我是否错了?

我当前的想法是,哪个用户以ENV['EMAIL_USERNAME'] e.t.c的形式运行这些命令。是在我的.zshrc中定义的,但我认为这是由冲击乘客提供的,因为我的database.yml文件中有一个password: <%= ENV['POSTGRES_PASSWORD'] %> .

任何想法都很感激。

详情如下:

production.rb配置:

代码语言:javascript
复制
  config.action_mailer.default_url_options = {host: 'myhost.com' }

  ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "myhost.com",
  :user_name            => ENV["EMAIL_USERNAME"],
  :password             => ENV["EMAIL_PWD"],
  :authentication       => "plain",
  :enable_starttls_auto => true
}

password_resets_controller.rb:

代码语言:javascript
复制
  ##
  # Sends password reset email
  def create
    user =User.find_by_email(params[:email])
    user.send_password_reset if user
    redirect_to root_url, notice: "Email sent with password reset instructions."
  end

使用RAILS_ENV=production rails c在生产服务器上的终端上运行这些线路的结果

代码语言:javascript
复制
[4] pry(main)> user =User.find_by_email(params[:email]); user.send_password_reset if user
  Rendered user_mailer/password_reset.html.erb (1.5ms)
  Rendered user_mailer/password_reset.html.erb (1.5ms)
  Rendered user_mailer/password_reset.text.erb (2.3ms)
  Rendered user_mailer/password_reset.text.erb (2.3ms)

Sent mail to email@address.net (1984.9ms)

Sent mail to email@address.net (1984.9ms)
Date: Mon, 03 Mar 2014 12:34:32 +0000
<snipped message content>

通过单击web界面上的按钮(通过password_reset_controller)运行它的结果:

代码语言:javascript
复制
App 1395 stdout:   Rendered user_mailer/password_reset.html.erb (0.5ms)
App 1395 stdout:   Rendered user_mailer/password_reset.text.erb (0.5ms)
App 1395 stdout: 
App 1395 stdout: Sent mail to email@address.net (188.8ms)
App 1395 stdout: Completed 500 Internal Server Error in 231ms
App 1395 stdout: 
App 1395 stdout: Net::SMTPAuthenticationError (530-5.5.1 Authentication Required. Learn more at
App 1395 stdout: ):
App 1395 stdout:   app/models/user.rb:53:in `send_password_reset'
App 1395 stdout:   app/controllers/password_resets_controller.rb:15:in `create'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-03 16:20:49

找到了这个问题的解决方案,我忘记了环境变量是从/etc/default/nginx读取的,而不是从我的.zshrc中读取的,我需要将它们添加到其中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22147281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档