从 JSON POST 触发 ActionMailer

Trigger ActionMailer from JSON POST

编辑:这是我从 Thomas 的回答中得到的工作代码,还有其他错误需要修复。

我正在使用 Rails API 服务器,该服务器设置为为用户创建共享链接。我设置了它,以便它们通过 POST 传递一些参数,我想发送邮件然后保存记录。我可以保存记录,但我似乎无法触发邮件程序。

这是控制器上的创建操作

def create
  @recipients = (share_params[:shared_with])
  @recipients.each do |recipient|
    ShareMailer
      .share_dealsheet(recipient)
      .deliver_now
    end
  @share = current_user.shares.create!(share_params)
  json_response(@share, :created)
end

和 ShareMailer class

class ShareMailer < ApplicationMailer

  default from: 'no-reply@dealsheetboard.com'

  def share_dealsheet(recipient)
    @recipient = recipient
    mail(to: @recipient, subject: "Test")
  end
end

还有一个保存为share_dealsheet.rb

的样板模板

如果我 POST 在 Postman 中执行以下操作,记录将被保存,但不会触发任何邮件程序(所以我假设因为其他邮件程序我在控制台中使用它们创建时的输出)。

{
    "token": "Sbdvmvt2VnzO0n3_thGSfZc1xkjs",
    "shared_with":{
        "1": "someemail@example.com",
        "2": "anotheremail@example.com"
    },
    "expiry": "30 June 2017"
}

您必须投递邮件,详情请参阅APIhttp://api.rubyonrails.org/v5.1/classes/ActionMailer/Base.html#class-ActionMailer::Base-label-Sending+mail

ShareMailer.share_dealsheet(share_params).deliver_now