Sidekiq открывает письмо открывалка вместо отправки писем - PullRequest
1 голос
/ 29 марта 2019

В моем приложении rails, когда пользователь создает сообщение, почта отправляется пользователю, создавшему сообщение. Я пробовал гем "delayed_job_active_record" для фоновой почтовой операции. Почта успешно отправлена. После этого я просто пытаюсь выполнить то же действие, используя sidekiq через средство открытия писем. Событие происходит, а также открыватель писем показывает содержимое почты. После этого вместо открывателя писем воспользуйтесь настройками гугл smtp. Даже, Sidekiq открывает письмо, не отправляя электронные письма. Итак, я удаляю открыватель писем. Но это приводит к ошибке, подобной этой

Нет такого файла или каталога открывалка писем

Это мой Posts_controller :::

def create
  @post = @topic.posts.new(post_params)
  PostJob.perform_later(current_user, @post.name)
end

Это мой файл post_job:

class PostJob < ApplicationJob
  queue_as :default

  def perform(user, post_title)
    PostMailer.announce_email(user, post_title).deliver
  end       
end

Это мой файл Post_mailer:

class PostMailer < ApplicationMailer
  def announce_email(user, post_title)
    @user = user
    @post_title = post_title
    mail(to: @user.email, subject: 'hurrah!!! Post created                                 Successfully')
  end
end

А это моя разработка.rb:

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_options = {from:  'aaaaaaaa@gmail.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'smtp.gmail.com',
  port: 587,
  domain: 'gmail.com',
  user_name: 'xxxxxxx@gmail.com',
  password: 'yyyyyyy',
  authentication: 'plain',
  enable_starttls_auto: true
}

А это мой Gemfile:

source 'https://rubygems.org'
git_source(:github) {|repo| "https://github.com/#{repo}.git"}
ruby '2.3.3'
gem 'bootstrap', '~> 4.2.1'
gem 'bullet', group: 'development'
gem 'cancancan', '~> 2.0'
gem 'coffee-rails', '~> 4.2'
gem 'devise'
gem 'jbuilder', '~> 2.5'
gem 'jquery-rails'
gem 'jquery-turbolinks'
gem 'local_time'
gem 'paperclip', '~> 5.0.0.beta1'
gem 'puma', '~> 3.11'
gem 'rails', '~> 5.2.2'
gem 'sass-rails', '~> 5.0'
gem 'turbolinks', '~> 5'
gem 'uglifier', '>= 1.3.0'
gem 'will_paginate', '>= 3.1.6'
group :production do
  gem 'pg', '~> 0.21'
end
group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 3.8'
  gem 'sqlite3', '1.3.13'
  gem 'rack-mini-profiler'
  # gem 'letter_opener'
end
group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'launchy'
end
group :test do
  gem 'capybara'
  gem 'factory_bot_rails'
  gem 'shoulda-matchers', '~> 4.0.0.rc1'
  gem 'database_cleaner'
  gem 'selenium-webdriver'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'rails-controller-testing'
gem 'strong_migrations'
gem "image_magick"
gem "mini_magick"
gem 'rails_warden'
gem 'activesupport', '~> 5.2', '>= 5.2.2'
gem 'remotipart', :git => 'https://github.com/westonganger/remotipart', :branch => 'fix_escape_javascript'
gem 'will_paginate-bootstrap4'
gem 'best_in_place'
gem 'sidekiq'
gem 'daemon', '~> 1.2'
gem 'delayed_job_active_record'
gem 'delayed_job_web'
gem 'sinatra', '>= 1.3.0', :require => nil

Если есть какие-то ошибки, я сделал. Расскажите другим способом отправки электронной почты пользователю с помощью sidekiq.

Ответы [ 3 ]

1 голос
/ 15 мая 2019

Попробуйте перезапустить сервер !! Если ничего не происходит, попробуйте перезагрузить систему.

0 голосов
/ 30 марта 2019

letter_opener - инструмент, используемый в среде разработки для «имитации» процесса отправки электронной почты. SMTP, однако, должен быть установлен в вашей производственной среде. Итак:

development.rb:

  config.action_mailer.raise_delivery_errors = false

  config.action_mailer.perform_caching = false

  config.action_mailer.default_url_options = { host: 'localhost:3000' }
  config.action_mailer.delivery_method = :letter_opener
  config.action_mailer.perform_deliveries = true

production.rb:

  config.action_mailer.default_url_options = { host: 'https://yourwebsite.com' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    domain: 'mail.google.com',
    port: 587,
    user_name: SOME_SECRET_USERNAME,
    password: SOME_SECRET_PASSWORD,
    authentication: :plain,
    enable_starttls_auto: true
  }
0 голосов
/ 30 марта 2019

Я обновляю свой ответ, когда тестировал эту проблему, и мне пришлось внести следующие изменения, чтобы мои электронные письма можно было просматривать с помощью Sidekiq, открывателя писем.

  1. Отключить sidekiq на устройстве

    if Rails.env.development? require 'sidekiq/testing' Sidekiq::Testing.inline! end

  2. Добавьте следующий код установки в файл development.rb

    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } ###ADDED FOR LETTER OPENER AND DEVISE MAILERS config.action_mailer.delivery_method = :letter_opener Rails.application.routes.default_url_options[:host] = 'localhost:3000'

Я также удалил строку config.action_mailer.perform_deliveries = true (это не должно иметь значения), и теперь я могу легко нажать на ссылку /letter_opener, чтобы увидеть мои электронные письма, хранящиеся локально.

Поскольку я работаю с редактором c9, он работает даже с любым именем локального хоста.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...