是否有教程解释如何从头开始(在开发和生产中)设置Desive的注册确认邮箱,即如果您没有设置Action Mailer?

谷歌搜索刚刚发现了一系列与此相关的独立信息.没有一件作品能充分说明问题,我也不确定它们是如何结合在一起的.有没有一个循序渐进的解释,甚至是解释最初步骤的东西?


终于成功了.遵循下面已接受答案中的所有步骤,然后将以下内容添加到我的环境中.rb文件:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
   :tls => true,
   :address => "smtp.gmail.com",
   :port => 587,
   :domain => "gmail.com",
   :authentication => :login,
   :user_name => "[username]",
   :password => "[password]"
 }

推荐答案

1..确保模型中包含可确认的内容.设计呼叫

class User < ActiveRecord::Base
  devise :database_authenticatable, :confirmable ...
end

2.确保将confirmable添加到用户迁移中

create_table :users do |t|
  t.database_authenticatable
  t.confirmable
  ...
end

如果您使用的是Deviate 2.0+,则会失败,因为Deviate不再提供迁移助手,因此t.confirmable会引发错误.相反,从their migration guide复制标记为"Confirmable"的块.

3.使用以下任一命令生成设备视图,以便您可以覆盖设备邮件程序视图:

rails generate devise:views # global
rails generate devise:views users # scoped

您现在可以覆盖devise/mailer/confirmation_instructions.html.erbusers/mailer/confirmation_instructions.html.erb中的邮件视图,具体取决于您的设置

4.对于development环境,在/config/environments/development.rb中添加以下配置行

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {:address => "localhost", :port => 1025}

5.对于/config/environments/production.rb中的production环境,您可以使用类似于以下内容的内容(假设您在本地主机上有一个SMTP服务器:25):

config.action_mailer.default_url_options = {:host => 'yourdomain.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address => "127.0.0.1",
  :port    => 25,
  :domain  => 'yourdomain.com'
}

6要测试开发中的设置,请安装mailcatcher gem,您将在开发中用作SMTP服务器,捕获所有传入邮件并在http://localhost:1080/上显示它们:

gem install mailcatcher

安装后,使用以下命令启动mailcatcher服务器:

mailcatcher

一个玩具SMTP服务器将在端口1025上运行,捕捉邮箱并在HTTP端口1080上显示它们.

You can now create an account and see the confirmations.

Ruby-on-rails相关问答推荐

select2 未应用于所有下拉列表;它只适用于数据的最后一条记录

如何使用 activerecord activerecord-session_store 在 Rails 应用程序中使用 cookie 值在数据库中查找会话记录

rspec中日期时间结束时的分数是多少?

错误 NoMethodError:ActionView::Base:Class 的未定义方法 `debug_rjs='

插件和 Ruby gem 之间的区别?

如何将动态 Ruby 代码嵌入到 Slim 模板中的javascript部分?

如何获取 Ruby on Rails 生成的表单元素 id 以供 JavaScript 参考?

为什么使用 HTTP PUT 和 DELETE 方法而不是 POST?

RSpec 设置会话对象

在 Rails 中,如何处理多个选中的复选框,只需拆分 , 或?

Rails - 从日期和时间戳获取日期

如何独立测试模型的回调方法?

将根 url 重定向到 Rails 应用程序中的其他位置

Rails 5:无法从参数中检索哈希值

Rails 引擎中的迁移?

关于在不适合任何地方的 Rails 应用程序中放置类的指南

Rails 3.1 Sprockets 需要指令 - 有没有办法排除特定文件?

保存后重定向到索引而不是显示

导轨链接到:远程

在创建控制器和模型之后(仅)创建 Ruby on Rails 视图