从 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
编辑:这是我从 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