Я настраиваю отправку подтверждения по электронной почте после того, как пользователь зарегистрируется с помощью devise. Я сделал все, что здесь написано (https: // github.com/plataformatec/devise/wiki/How-To:-Add-:confirmable-to-Users), но он по-прежнему не работает.

Вот несколько кодов:

//development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

//devise.rb
  config.mailer_sender = 'myEmail@gmail.com'
  # Configure the class responsible to send e-mails.
  config.mailer = "Mailer"

//Mailer.rb
class Mailer < Devise::Mailer
  helper :application 
  include Devise::Controllers::UrlHelpers 
  default template_path: 'devise/mailer' 
end

Мне нужно настроить что-то еще, чтобы отправить письмо с подтверждением по электронной почте в среде разработки?

3
Kahsn 3 Май 2016 в 08:14

3 ответа

Лучший ответ

Да, вы должны настроить параметры smtp для отправки писем, например:

require 'tlsmail'
  Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
    ActionMailer::Base.delivery_method = :smtp
     config.action_mailer.perform_deliveries = true
     config.action_mailer.default :charset => "utf-8"
       ActionMailer::Base.smtp_settings = {
       :address              => "smtp.gmail.com",
       :port                 => 587,
       :user_name            => "YOUR_EMAIL",
       :password             => 'PASSWORD',
       :authentication       => "plain",
       :enable_starttls_auto => true
       }

Добавьте приведенный выше код в свой development.rb, чтобы настроить параметры smtp. Добавьте свой адрес электронной почты и пароль в код, где это необходимо. Надеюсь, все будет хорошо!

2
Muhammad Yawar Ali 3 Май 2016 в 05:19

В инициализаторах / devise.rb config.mailer_sender = 'ваш адрес электронной почты'

config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      address:              'smtp.gmail.com',
      port:                  465,
      domain:               'gmail.com',
      user_name:            'your email',
      password:             'your password',
      authentication:       'plain',
      enable_starttls_auto: true,
      ssl: true

  }
1
Deepak Nagar 16 Май 2019 в 20:04

В дополнение к ответу @Muhammad также включите эту строку кода в свой development.rb

config.action_mailer.default_url_options = {host: 'your server' } # ex. localhost:3000
config.action_mailer.raise_delivery_errors = true # to raise error if smtp has error on setup
config.action_mailer.default :charset => "utf-8"
1
Lymuel 3 Май 2016 в 05:28