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

但是,当我发送联系表单时,我的邮箱中没有收到电子邮件,而是收到以下错误:

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

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

有谁知道可能是什么问题?

感谢您的帮助,

安东尼

有帮助吗?

解决方案

Rails 4.0(Rails 4.1使用Secrets.yml文件设置凭据):

检查文件 config / sendentments / 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 。如果用户名包含任何非alpha字符,则可能需要在文件 config / application.yml 中的引号中括起来。

其他提示

只需仔细检查参数名称是否正确。对我来说改变 username 进入 user_name 解决了问题。
如果您想看到错误,请更改值 config.action_mailer.raise_delivery_errors 进入 true。我有 Rails 4,它不需要任何设置更改即可正常工作。
谢谢@Toontje 和@Daniel Kehoe

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top