【问题标题】:email confirmation using devise使用设计的电子邮件确认
【发布时间】:2021-08-12 08:11:43
【问题描述】:

运行 rails g devise:install 后,我按照 vs 代码中的说明进行操作 我在 development.rb 中添加了 config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } 我还取消了迁移文件中可确认的注释。 我还在 user.rb 中添加了可确认的 在 environment.rb 这就是我所拥有的

  # Load the Rails application.
require_relative "application"

# Initialize the Rails application.
Rails.application.initialize!

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
address: 'smtp.gmail.com',
port: 465,
domain: 'gmail.com',
user_name: ENV['test@gmail.com'],
password: ENV['123456'],
authentication: 'plain',
:ssl =>true,
:tsl => true,
enable_starttls_auto: true

}

我不确定如何输入正确的用户名和密码。 我去注册时没有收到任何错误消息,但是当我去我用来注册的电子邮件时,我没有收到任何电子邮件。

我还在谷歌设置中为这两个电子邮件启用了不太安全的应用程序。

请帮忙 谢谢

【问题讨论】:

  • 对于开发,我真的建议您使用 mailcatcher gem 而不是实际连接到 Gmail。 Gmail 采取了各种反垃圾邮件措施,例如 IP 白名单,这使得在本地设置它很麻烦,然后你必须重复整个生产过程。

标签: ruby-on-rails


【解决方案1】:

现代 Rails 方法(5.1+)是使用encrypted secrets。当您运行rails credentials:edit 时,Rails 将在您选择的编辑器中打开一个基本凭据文件。然后,您可以将您的 Gmail 密码和电子邮件添加到文件中:

gmail:
  password: your_password_goes_here
  user_name: your-email-address@gmail.com

Rails 随后将创建config/credentials.yml.enc 文件,该文件可以检入版本控制。该文件已使用您的 master.key 文件加密,不应将其签入版本控制。

然后您可以使用Rails.application.credentials 访问加密的秘密:

ActionMailer::Base.smtp_settings = {
  address: 'smtp.gmail.com',
  port: 465,
  domain: 'gmail.com',
  user_name: Rails.application.credentials.gmail.fetch(:user_name),
  password: Rails.application.credentials.gmail.fetch(:password),
  authentication: 'plain',
  ssl: true,
  tsl: true,
  enable_starttls_auto: true
}

【讨论】:

    【解决方案2】:

    首先你需要安装一个gem,比如dotenv-rails。

    这将允许您使用环境变量。

    为此,请在项目的根目录中创建一个 .env 文件。

    您可以在该文件中添加环境变量,例如:

    EMAIL_USERNAME=someusername
    EMAIL_PASSWORD=somepassword
    

    然后在你的environment.rb 中你可以这样使用它:

    user_name: ENV['EMAIL_USERNAME'],
    password: ENV['EMAIL_PASSWORD']
    

    【讨论】:

    • 有没有我可以简单地输入我的用户名和密码而不安装宝石?比如用户名:'test@gmail.com' 密码:'123456'
    • 是的,不用环境变量就可以使用。只是放前。 user_name: "someusername@mail.com"
    • 但是使用环境变量会更安全,因为您可以不将其签入 Git,它会确保您的凭据安全。
    • 这是一种非常过时的方法。请改用加密的机密。如果您真的想从文件中设置 ENV 变量,请使用 shellenv 或任何其他现代语言不可知论工具,而不是将 dotenv 放入您的 gemfile。
    • @max 感谢您的意见。您的答案更好、更安全。
    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 2012-03-10
    • 2019-08-04
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多