如何解决ActionMailer忽略?

时间:2017-06-23 14:59:22

标签: ruby-on-rails ruby actionmailer

您好我正在ruby on rails上进行用户注册申请。 但ActionMailer进程忽略了我的代码。 当我尝试使用时     UserMailer :: confirmation_email.deliver 在rails s上,我可以发送电子邮件。 但是当我使用下面的流程时,UserMailer :: confirmation_email会被忽略。 你知道怎么解决吗?

user_controller.rb

class UsersController < ApplicationController
    skip_before_action :verify_authenticity_token

    def create

    user = User.new(user_params)

    result = Users::RegisterService.register_user(user)
    render result
  end
end

register_service.rb

  module Users

    module RegisterService
      module_function
      def register_user(user = {})

        if user.save
          UserMailer::confirmation_email(user)
          result = { json: {status: 'User created successfully'}, status: :created }
        else
          result = { json: { errors: user.errors.full_messages }, status: :bad_request }
        end

        return result
      end
    end
  end

user_mailer.rb

class UserMailer < ApplicationMailer
  default from: 'email@gmail.com'

  def confirmation_email(user)
    @user = user
    @url = 'http://192.16.8.33.10/user/confirm?confirmation_token=' +     @user.confirmation_token
    mail(
        to: @user.email,
        subject: 'Welcome to My Awesome Site',
        template_name: 'user_confirm'
    )
  end
end

1 个答案:

答案 0 :(得分:0)

致电deliver_now立即发送电子邮件,deliver_later以异步方式发送电子邮件。

UserMailer::confirmation_email(user).deliver_now