未调用 Mailer 方法?
Mailer method not being called?
内部控制器:
def update
@user.update({approved: true})
UserMailer.send_approved_mail(@user)
redirect_to(root_url)
end
里面user_mailer.rb
class UserMailer < Devise::Mailer
def send_approved_mail(user)
@resource = user
email_body = render "user_activated_mail"
if @resource.valid?
client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"])
client.deliver(from: ENV["POSTMARK_SIGNATURE"],
to: @resource.email, subject: "User Activation information.",
tag: 'account-activated', :content_type => "text/html",
html_body: email_body)
end
end
end
在 rails 4.1.0 中调用控制器中的上述方法并发送电子邮件,但在 rails 4.2 中未调用控制器中的邮件程序方法,但在从 rails 控制台它工作。我已经为邮戳 api 和配置文件进行了所有必要的配置。唯一的事情是在 rails 4.1.0 中控制器内部的邮件程序被调用,但在 rails 4.2 中它不会但在从 rails 控制台调用时起作用。具体是什么原因实在想不通
您在此处注意到的行为是 Rails 4.2 中引入的新默认行为:
With the introduction of Active Job and #deliver_later ... the invocation of the instance methods (on a mailer) is deferred until either deliver_now or deliver_later is called.
查看 Rails 4.2 upgrade guide 了解更多详情。
不过别担心。您仍然可以将 Postmark 与 ActionMailer 一起使用。 official Postmark Rails gem 提供与 ActionMailer for Postmark 的直接集成。通过使用它,您应该能够像编写常规 Rails 邮件程序一样编写邮件程序,而无需在代码中手动管理 Postmark 连接。
P.S。我在 Wildbit(Postmark 的创建者)工作。欢迎随时直接联系我们。
内部控制器:
def update
@user.update({approved: true})
UserMailer.send_approved_mail(@user)
redirect_to(root_url)
end
里面user_mailer.rb
class UserMailer < Devise::Mailer
def send_approved_mail(user)
@resource = user
email_body = render "user_activated_mail"
if @resource.valid?
client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"])
client.deliver(from: ENV["POSTMARK_SIGNATURE"],
to: @resource.email, subject: "User Activation information.",
tag: 'account-activated', :content_type => "text/html",
html_body: email_body)
end
end
end
在 rails 4.1.0 中调用控制器中的上述方法并发送电子邮件,但在 rails 4.2 中未调用控制器中的邮件程序方法,但在从 rails 控制台它工作。我已经为邮戳 api 和配置文件进行了所有必要的配置。唯一的事情是在 rails 4.1.0 中控制器内部的邮件程序被调用,但在 rails 4.2 中它不会但在从 rails 控制台调用时起作用。具体是什么原因实在想不通
您在此处注意到的行为是 Rails 4.2 中引入的新默认行为:
With the introduction of Active Job and #deliver_later ... the invocation of the instance methods (on a mailer) is deferred until either deliver_now or deliver_later is called.
查看 Rails 4.2 upgrade guide 了解更多详情。
不过别担心。您仍然可以将 Postmark 与 ActionMailer 一起使用。 official Postmark Rails gem 提供与 ActionMailer for Postmark 的直接集成。通过使用它,您应该能够像编写常规 Rails 邮件程序一样编写邮件程序,而无需在代码中手动管理 Postmark 连接。
P.S。我在 Wildbit(Postmark 的创建者)工作。欢迎随时直接联系我们。