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调用时不起作用.究竟是什么原因无法弄明白.
您在此处注意到的行为是Rails 4.2中引入的新默认值:
随着Active Job和#deliver_later的引入......实例方法的调用(在邮件程序上)被推迟,直到调用deliver_now或deliver_later.
有关更多详细信息,请查看Rails 4.2升级指南.
不过不用担心.您仍然可以使用Postmark与ActionMailer.该官方邮戳Rails的宝石提供的ActionMailer邮戳一个简易的整合.通过使用它,您应该能够像编写常规Rails邮件程序一样编写邮件程序,而无需在代码中手动管理邮戳连接.
PS我在Wildbit工作(邮戳的创作者).请随时直接与我们联系.
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |