Ruby on Rails - не получает «Приветственное письмо» в производстве - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь отправить приветственное письмо при создании нового пользователя с помощью 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

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Из направляющих

Примечание. По состоянию на 15 июля 2014 г. Google усилил меры безопасности и теперь блокирует попытки использования приложений, которые он считает менее безопасными. Вы можете изменить настройки Gmail здесь, чтобы разрешить попытки. Если в вашей учетной записи Gmail включена двухфакторная аутентификация, вам нужно будет установить пароль приложения и использовать его вместо обычного пароля. Кроме того, вы можете использовать другой ESP для отправки электронной почты, заменив «smtp.gmail.com» выше на адрес вашего провайдера.

Можете ли вы проверить настройки безопасности Gmail по этой ссылке? Мне интересно, заблокирован ли производственный хост, потому что он поступает от чего-то, что может показаться менее безопасным (размещенный сервер по сравнению с вашим локальным компьютером)

0 голосов
/ 09 июня 2019

Я не вижу серьезных проблем с вашим кодом.Первое, что я проверю, это чтобы убедиться, что учетные данные верны.Если это не проблема, без информации журнала я не уверен в проблеме.

...