如何解决 ActionMailer 忽略?
How to resolve ActionMailer ignoring?
您好,我在 rails 上通过 ruby 进行用户注册申请。
但是 ActionMailer 进程忽略了我的代码。
当我尝试使用
UserMailer::confirmation_email.交付
在 rails 秒,我可以发送电子邮件。
但是当我使用波纹管过程时, 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
调用 deliver_now
立即发送电子邮件,调用 deliver_later
异步发送电子邮件。
UserMailer::confirmation_email(user).deliver_now
您好,我在 rails 上通过 ruby 进行用户注册申请。 但是 ActionMailer 进程忽略了我的代码。 当我尝试使用 UserMailer::confirmation_email.交付 在 rails 秒,我可以发送电子邮件。 但是当我使用波纹管过程时, 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
调用 deliver_now
立即发送电子邮件,调用 deliver_later
异步发送电子邮件。
UserMailer::confirmation_email(user).deliver_now