没有调用梅勒方法?

cod*_*lan 6 postmark ruby-2.1 ruby-on-rails-4.2

内部控制器:

def update  
  @user.update({approved: true})  
  UserMailer.send_approved_mail(@user)  
  redirect_to(root_url)  
end  
Run Code Online (Sandbox Code Playgroud)

在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  
Run Code Online (Sandbox Code Playgroud)

在rails 4.1.0中,正在调用控制器中的方法并且正在发送电子邮件,但是在rails 4.2中,控制器中的邮件程序方法没有被调用,但是当从rails控制台调用时它可以工作.我为postmark api和配置文件做了所有必要的配置.唯一的事情是在rails 4.1.0中,控制器内部的邮件程序被调用,但在rails 4.2中,它从rails console调用时不起作用.究竟是什么原因无法弄明白.

tem*_*hka 6

您在此处注意到的行为是Rails 4.2中引入的新默认值:

随着Active Job和#deliver_later的引入......实例方法的调用(在邮件程序上)被推迟,直到调用deliver_now或deliver_later.

有关更多详细信息,请查看Rails 4.2升级指南.

不过不用担心.您仍然可以使用Postmark与ActionMailer.该官方邮戳Rails的宝石提供的ActionMailer邮戳一个简易的整合.通过使用它,您应该能够像编写常规Rails邮件程序一样编写邮件程序,而无需在代码中手动管理邮戳连接.

PS我在Wildbit工作(邮戳的创作者).请随时直接与我们联系.