Search code examples
ruby-on-railsrubydevisemailcatcher

I don't get confirm mail


I have a problem with devise mail confirm. I adding mailcatcher, that work correct:

Thu, 24 Sep 2015 05:49:50 +0300
From: [email protected]
Reply-To: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: Confirmation instructions
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<p>Welcome [email protected]!</p>

<p>You can confirm your account email through the link below:</p>

<p><a href="http://localhost:3000/users/confirmation?confirmation_token=zYTXtSnJfom1oNS-o8Fy">Confirm my account</a></p>

but i not getting this at my gmail. Here is my code on rails:

/development.rb

 Rails.application.configure do
      config.cache_classes = false
      config.eager_load = false
      config.consider_all_requests_local       = true
      config.action_controller.perform_caching = false
      config.action_mailer.raise_delivery_errors = false
    config.action_mailer.perform_deliveries = true
      config.active_support.deprecation = :log
      config.active_record.migration_error = :page_load
      config.assets.debug = true
      config.assets.digest = true
      config.assets.raise_runtime_errors = true
      config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {:address => "localhost", :port => 1025}
    end

/production.rb

  Rails.application.configure do
      config.log_level = :debug
      config.i18n.fallbacks = true

      config.log_formatter = ::Logger::Formatter.new
      config.active_record.dump_schema_after_migration = false
      config.action_mailer.default_url_options = {:host => 'localhost:3000'}
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      :address => "127.0.0.1"
      :port    => 25,
      :domain  => 'localhost:3000'
    }
    end

i use this comment like a documentation in my try to set mail confirm: How do I set up email confirmation with Devise?


Solution

  • To enable email sending, you need to do two things.

    1. Configure your email for in config/environments/development.rb (not sure if you've already done that.

    2. Configure your email in Devise by editing config/initializers/devise.rb. You've definitely not done that, given the "from" address visible in your log.

    Step 1. Here are settings if you are sending from a gmail account. Pay attention to all the email settings, including allowing email sending in development mode and default url option. You have to change the smtp settings to reflect your account.

        Rails.application.configure do
          # Settings specified here will take precedence over those in config/application.rb.
    
          # In the development environment your application's code is reloaded on
          # every request. This slows down response time but is perfect for development
          # since you don't have to restart the web server when you make code changes.
          config.cache_classes = false
    
          # Do not eager load code on boot.
          config.eager_load = false
    
          # Show full error reports and disable caching.
          config.consider_all_requests_local       = true
          config.action_controller.perform_caching = false
    
          # Send emails in test mode
          config.action_mailer.perform_deliveries = true
          config.action_mailer.default_url_options = { :host => 'localhost:3000' }
          config.action_mailer.delivery_method = :smtp
    
          # Don't care if the mailer can't send.
          config.action_mailer.raise_delivery_errors = true
    
          config.action_mailer.smtp_settings = {
          address:            "smtp.gmail.com",
          port:               587,
          domain:             "domain.of.sender.net",
          authentication:     "plain",
          user_name:          "your_user_name",
          password:           "your_password",
          enable_starttls_auto: true
      }
    

    Step 2. Configure config/initializers/devise.rb to include the email that you just configured for sending.

    # Use this hook to configure devise mailer, warden hooks and so forth.
    # Many of these configuration options can be set straight in your model.
    Devise.setup do |config|
      # The secret key used by Devise. Devise uses this key to generate
      # random tokens. Changing this key will render invalid all existing
      # confirmation, reset password and unlock tokens in the database.
      # Devise will use the `secret_key_base` on Rails 4+ applications as its `secret_key`
      # by default. You can change it below and use your own secret key.
      # config.secret_key = 'ewe44lwemwle66wmew4lewwew'
    
      # ==> Mailer Configuration
      # Configure the e-mail address which will be shown in Devise::Mailer,
      # note that it will be overwritten if you use your own mailer class
      # with default "from" parameter.
      config.mailer_sender = 'YOUR_EMAIL_HERE'