目前我正在做 Daniel Kehoe 的Learn Ruby on Rails教程。其中一项练习是使用 Google 的 Gmail 帐户从“联系人”页面发送联系表单。
但是,当我发送联系表时,我的邮箱中没有收到电子邮件,而是收到此错误:
“已请求 SMTP-AUTH 但缺少用户名”
在我的 config/application.yml 文件中,我设置了我的 Gmail 用户名和密码。
有谁知道可能是什么问题?
感谢您的帮助,
安东尼
目前我正在做 Daniel Kehoe 的Learn Ruby on Rails教程。其中一项练习是使用 Google 的 Gmail 帐户从“联系人”页面发送联系表单。
但是,当我发送联系表时,我的邮箱中没有收到电子邮件,而是收到此错误:
“已请求 SMTP-AUTH 但缺少用户名”
在我的 config/application.yml 文件中,我设置了我的 Gmail 用户名和密码。
有谁知道可能是什么问题?
感谢您的帮助,
安东尼
对于 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
尝试将 ENV["GMAIL_USERNAME"] 替换为您的 Gmail 用户名。
你可以在你的 Unix shell 中设置 ENV["GMAIL_USERNAME"]。或者将其设置在文件config/application.yml中。如果用户名包含任何非字母字符,您可能需要在文件config/application.yml中将其括在引号中。
只需仔细检查参数名称是否正确。对我来说,username
改成user_name
解决了这个问题。
如果您想查看错误,请将 的值更改config.action_mailer.raise_delivery_errors
为true
。我有 Rails 4,它不需要任何设置更改即可正常工作。
谢谢@Toontje 和@Daniel Kehoe