dev*_*ast 1 ruby ruby-on-rails heroku devise sendgrid
按照教程我将基本的rails应用程序添加用户身份验证.
有一个步骤,我必须将以下代码添加到setup_mail.rb文件中
if Rails.env.development?
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: 'smtp.sendgrid.net',
port: '587',
authentication: :plain,
user_name: ENV['SENDGRID_USERNAME'],
password: ENV['SENDGRID_PASSWORD'],
domain: 'heroku.com',
enable_starttls_auto: true
}
end
Run Code Online (Sandbox Code Playgroud)
我添加了sendgrid插件,并将用户ID和密码也放在application.yml文件中.
但是当我注册时,我没有收到确认邮件.
交叉检查development.rb文件并确保以下代码存在
....
config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
end
Run Code Online (Sandbox Code Playgroud)
遵循教程中的单词.因此真的很难过!谷歌把我指向了几个地方,让我更加困惑!
这就是我的迁移db文件目前的样子
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Customization
t.string :name
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的user.rb文件
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
end
Run Code Online (Sandbox Code Playgroud)
这些是我按顺序执行的步骤
bundlerails g devise:installrails g devise:viewsrails g devise Userconfirmable在迁移文件中取消注释rake db:migrate:confirmable到user.rb中的User类heroku addons:add sendgrid:starterheroku congif:get SENDGRID_USERNAMEheroku config:get SENDGRID_PASSWORD更新
在development.rb中添加了邮件设置,没有运气.
尝试将域名更改domain: 'heroku.com'为domain: 'sendgrid.com',没有运气.
这是服务器日志.邮件似乎已经发送但我无法在收件箱或垃圾邮件中找到它
Sent mail to myemail@gmail.com (2070.9ms)
Date: Wed, 07 Jan 2015 13:52:05 +0000
From: please-change-me-at-config-initializers-devise@example.com
Reply-To: please-change-me-at-config-initializers-devise@example.com
To: myemailgmail.com
Message-ID: <54ad3a05d2b29_1ba3fb59082841433253@bloc-ruby-179559.mail>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<p>Welcome !</p>
<p>You can confirm your account email through the link below:</p>
<p><a href="http://localhost:3000/users/confirmation? confirmation_token=W3xuYfA8aq2obMBmffghfghQaDt">Confirm my account</a></p>
(45.0ms) commit transaction
Redirected to http://bloc-ruby-179559.apse1.nitrousbox.com/
Completed 302 Found in 2872ms (ActiveRecord: 46.4ms)
Run Code Online (Sandbox Code Playgroud)
小智 5
检查以确保Sendgrid没有暂停您的帐户.通过Heroku仪表板登录.然后点击你的应用.然后在插件下,单击Sendgrid.这将带您到他们的仪表板.如果有警告说您的帐户处于待审核状态,则必须与他们联系并让他们将其删除.