Ошибка при отправке электронной почты через SMTP в приложении Rails - PullRequest
0 голосов
/ 25 января 2020

Я работаю над приложением Rails, и когда-то создал модуль почтовой программы go. Работало нормально, а сейчас нет. Это всегда выдает мне одну и ту же ошибку каждый раз, когда я запускаю приложение.

По сути, я делаю то, что, когда создается новый пользователь, я посылаю ему / ей приветственное письмо по SMTP.

Это мой application_mailer.rb

class ApplicationMailer < ActionMailer::Base
  default from: 'tripsofnitk@gmail.com'
  layout 'mailer'
end

Мой user_mailer.rb

class UserMailer < ApplicationMailer

  # Subject can be set in your I18n file at config/locales/en.yml
  # with the following lookup:
  #
  #   en.user_mailer.welcome_email.subject
  #
  default from: 'tripsofnitk@gmail.com'
  def welcome_email
    @user = params[:user]
    mail(to:@user.email,subject:'Welcome Email')
  end
end

Мой user.rb Здесь я звоню UserMailer

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  has_many :tenders
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

         validates_presence_of :first_name,:last_name 
    after_create:send_mail
  def send_mail
    UserMailer.with(user:self).welcome_email.deliver_later!
  end
  def first
        self.first_name
   end
  def last
    self.last_name
  end
end

Мой development.rb файл

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.
  config.consider_all_requests_local = true

  # Enable/disable caching. By default caching is disabled.
  # Run rails dev:cache to toggle caching.
  if Rails.root.join('tmp', 'caching-dev.txt').exist?
    config.action_controller.perform_caching = true
    config.action_controller.enable_fragment_cache_logging = true

    config.cache_store = :memory_store
    config.public_file_server.headers = {
      'Cache-Control' => "public, max-age=#{2.days.to_i}"
    }
  else
    config.action_controller.perform_caching = false

    config.cache_store = :null_store
  end

  # Store uploaded files on the local file system (see config/storage.yml for options).
  config.active_storage.service = :local

   # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default_options = {from: 'tripsofnitk@gmail.com'}

  config.action_mailer.delivery_method = :smtp
 #replace with your own url
config.action_mailer.default_url_options = { host: 'localhost:3000',protocol:'http' }

# SMTP settings for gmail
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :user_name            => "tripsofnitk@gmail.com",
  :password             => "password",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

  config.action_mailer.perform_caching = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations.
  config.active_record.migration_error = :page_load

  # Highlight code that triggered database queries in logs.
  config.active_record.verbose_query_logs = true

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  # Suppress logger output for asset requests.
  config.assets.quiet = true

  # Raises error for missing translations.
  # config.action_view.raise_on_missing_translations = true
  config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  # Use an evented file watcher to asynchronously detect changes in source code,
  # routes, locales, etc. This feature depends on the listen gem.
  config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end

И эту ошибку я получаю каждый раз

[ActiveJob] [ActionMailer::MailDeliveryJob] [673fca66-6894-49df-a8c0-8811ea7771e2] Error performing ActionMailer::MailDeliveryJob (Job ID: 673fca66-6894-49df-a8c0-8811ea7771e2) from Async(mailers) in 30018.57ms: Net::OpenTimeout (execution expired):
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:539:in `initialize'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:539:in `open'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:539:in `tcp_socket'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:549:in `block in do_start'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/timeout.rb:103:in `timeout'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:548:in `do_start'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/smtp.rb:518:in `start'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/mail-2.7.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/mail-2.7.1/lib/mail/message.rb:276:in `deliver!'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/actionmailer-6.0.1/lib/action_mailer/message_delivery.rb:104:in `block in deliver_now!'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/actionmailer-6.0.1/lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/actionmailer-6.0.1/lib/action_mailer/message_delivery.rb:103:in `deliver_now!'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/actionmailer-6.0.1/lib/action_mailer/mail_delivery_job.rb:18:in `perform'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/execution.rb:39:in `block in perform_now'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/i18n-1.7.0/lib/i18n.rb:297:in `with_locale'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/translation.rb:9:in `block (2 levels) in <module:Translation>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `instance_exec'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/core_ext/time/zones.rb:66:in `use_zone'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/timezones.rb:9:in `block (2 levels) in <module:Timezones>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `instance_exec'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/logging.rb:25:in `block (4 levels) in <module:Logging>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications.rb:180:in `block in instrument'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications.rb:180:in `instrument'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/logging.rb:24:in `block (3 levels) in <module:Logging>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/logging.rb:45:in `block in tag_logger'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/tagged_logging.rb:80:in `block in tagged'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/tagged_logging.rb:28:in `tagged'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/tagged_logging.rb:80:in `tagged'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/logging.rb:45:in `tag_logger'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/logging.rb:21:in `block (2 levels) in <module:Logging>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `instance_exec'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:139:in `run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/execution.rb:38:in `perform_now'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/execution.rb:24:in `block in execute'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:112:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/railtie.rb:43:in `block (4 levels) in <class:Railtie>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/execution_wrapper.rb:88:in `wrap'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/reloader.rb:72:in `block in wrap'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/execution_wrapper.rb:88:in `wrap'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/reloader.rb:71:in `wrap'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/railtie.rb:42:in `block (3 levels) in <class:Railtie>'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `instance_exec'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:121:in `block in run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:139:in `run_callbacks'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/execution.rb:22:in `execute'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/activejob-6.0.1/lib/active_job/queue_adapters/async_adapter.rb:70:in `perform'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:348:in `run_task'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:337:in `block (3 levels) in create_worker'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
/home/gaurav/.rvm/rubies/ruby-2.6.5/lib/ruby/gems/2.6.0/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'

Как я уже упоминал, точно такой же код работал раньше. Заранее спасибо.

...