Rails 4,如何正确配置smtp设置(gmail)

Res*_*ieC 49 email smtp ruby-on-rails ruby-on-rails-4

我正在尝试在Rails 4中创建一个联系表单.我在这里做了一些挖掘,并且能够使大部分内容工作.(关注@ sethfri的工作在这里联系Form Mailer in Rails 4)

现在我可以填写表格框并点击发送.在我的rails服务器中,它说邮件出站到我的电子邮件地址,但我的gmail框中没有收到任何内容,所以我认为我的smtp设置不正确.我的smtp设置是:

...配置/环境/ development.rb

config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "mygmailusername@gmail.com",
    :password => "myGmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
  } 
Run Code Online (Sandbox Code Playgroud)

我还添加了 .../config/initializers/smtp_settings.rb

ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "gmailuser@gmail.com",
    :password => "gmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么/做错了什么?我玩了几件事(将default_url更改为端口1025,更改:port =>"587"更改为:port => 587)但没有成功.

谢谢您的帮助!

Tar*_*ani 55

您必须正确设置域.目前在代码中发布了其"mydomain.net".如果你想通过gmail发送它,请将其更改为gmail.com.

config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            'xyz@gmail.com',
  password:             'yourpassword',
  authentication:       :plain,
  enable_starttls_auto: true
}
Run Code Online (Sandbox Code Playgroud)

  • 将`:authentication`键的值从`:plain`更改为`:login`.它对我有用,使用rails 4. (12认同)
  • 嘿,我给了它一个镜头,用引号587端口尝试它,没有引号,也没有工作. (2认同)
  • 转到 https://myaccount.google.com/lesssecureapps 并激活允许不太安全的应用程序:开 (2认同)

Kim*_*ler 41

如果在使用gmail发送电子邮件(Google Apps帐户常见)时遇到Net :: SMTPAuthenticationError等错误,请访问您的Gmail设置并启用安全性较低的应用程序以使应用程序正常运行.


Gab*_*uin 7

几个小时后,我会找到一种方法让它起作用.对于我自己,我需要进行两步验证并使用Gmail应用程序密码

启用两步验证(也称为双因素身份验证)后,您可以为帐户添加额外的安全保护.您使用您知道的内容(密码)和您拥有的内容(将代码发送到手机)登录.

设置两步验证

  1. 转到两步验证页面.您可能需要登录自己的Google帐户.
  2. 在右侧的"两步验证"框中,选择开始设置.
  3. 按照逐步设置过程进行操作.

应用密码是一个16位数的密码,可让应用或设备访问您的Google帐户.如果您使用两步验证并在尝试访问Google帐户时看到"密码不正确"错误,则可以使用应用程序密码解决问题.大多数情况下,每个应用程序或设备只需输入一次应用程序密码,因此不必担心记忆它

如何生成应用密码

  1. 访问您的应用密码页面.系统可能会要求您登录Google帐户.
  2. 在底部,点击选择应用,然后选择您正在使用的应用.
  3. 单击选择设备,然后选择您正在使用的设备.
  4. 选择生成.
  5. 按照说明在设备上输入应用程序密码(黄色栏中的16个字符代码).
  6. 选择完成


tru*_*gnm 7

2020年,Rails 6更新答案:

  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_caching = false
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: "blabla@gmail.com",
    password: "blabla", 
    domain: "smtp.gmail.com",
    openssl_verify_mode: "none",
  }
Run Code Online (Sandbox Code Playgroud)