已请求SMTP-AUTH但缺少用户名

时间:2014-02-26 08:03:47

标签: smtp-auth learn-ruby-on-rails

目前我正在做Daniel Kehoe的Learn Ruby on Rails教程。其中一项练习是使用Google的Gmail帐户从联系页面发送联系表单。

但是,当我发送联系表单时,我收到此错误,而不是在我的邮箱中收到电子邮件:

“SMTP-AUTH已请求但缺少用户名”

在我的config / application.yml文件中,我设置了Gmail用户名和密码。

有没有人知道可能是什么问题?

感谢您的帮助,

安东尼

2 个答案:

答案 0 :(得分:5)

对于Rails 4.0(Rails 4.1使用secrets.yml文件来设置凭据):

检查文件 config / environments / development.rb ,你应该有:

  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: ENV["DOMAIN_NAME"],
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["GMAIL_USERNAME"],
    password: ENV["GMAIL_PASSWORD"]
  }
  # ActionMailer Config
  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  # Send email in development mode.
  config.action_mailer.perform_deliveries = true

尝试用您的Gmail用户名替换ENV [“GMAIL_USERNAME”]。

您可以在Unix shell中设置ENV [“GMAIL_USERNAME”]。或者将其设置在 config / application.yml 文件中。如果用户名包含任何非字母字符,您可能需要将其用引号括在 config / application.yml 文件中。

答案 1 :(得分:5)

只需仔细检查参数名称是否正确。对我而言,将username更改为user_name解决了问题 如果您希望查看错误,请将config.action_mailer.raise_delivery_errors的值更改为true。 我有Rails 4并且它不需要任何设置更改才能正常工作。
谢谢@Toontje和@Daniel Kehoe