Я пытаюсь отправить приветственное письмо при создании нового пользователя с помощью Action Mailer.Я следовал приведенному здесь руководству: https://guides.rubyonrails.org/action_mailer_basics.html
Сообщение электронной почты успешно при создании пользователя на локальном хосте: 3000, но при развертывании и тестировании в производственной среде (Heroku) безуспешно.
Еще хуже, я не вижу ошибок в журналах Heroku.
Я не совсем уверен, что проверять на этом этапе.Я попытался переместить все в мой файл application.rb, поскольку конфигурация такая же (см .: ActionMailer не работает в рабочей среде )
Я подумал, что отправка может быть отложенасообщение, но я уже попробовал UserMailer.with(user: @user).welcome_email.deliver_later
, а также deliver_now
config / application.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'gmail.com',
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"],
authentication: 'plain',
enable_starttls_auto: true }
config / environment / production.rb
config.action_mailer.raise_delivery_errors = false
config.action_mailer.perform_caching = false
mailers / user_mailer
class UserMailer < ApplicationMailer
default from: 'pickleballsocial@gmail.com'
def welcome_email
@user = params[:user]
@url = 'https://pickleballsocial.herokuapp.com'
mail(to: @user.email, subject: 'Welcome Pickleball Social')
end
end
users_controller
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
session[:user_id] = @user.id
# Tell the UserMailer to send a welcome email after save
UserMailer.with(user: @user).welcome_email.deliver_later
format.html { redirect_to(@user, notice: 'User was successfully created.') }
format.json { render json: @user, status: :created, location: @user }
#redirect_to user_path(@user)
else
format.html { render action: 'new' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end