我想使用mailgun-ruby MessageBuilder API在生产环境中构建和发送应用程序电子邮件。该文档建议我做这样的事情:
def confirmation_instructions(record,token,opts={})
mg_client = Mailgun::Client.new ENV['MAILGUN_API_KEY']
mb_obj = Mailgun::MessageBuilder.new
mb_obj.from("from@site.com",{"first" => "First","last" => "Last"})
mb_obj.add_recipient(:to,record.email)
mb_obj.subject("Please confirm your account")
mb_obj.body_html("<p>how would i pass the default confirmation_instructions erb template as an argument to this method?</p>")
mg_client.send_message("mail.site.com",mb_obj)
end
问题是,一旦我开始使用Mailgun,就也停止使用actionmailer的默认mail()
语法。这似乎阻止了Rails手动选择与方法名称匹配的模板。
我首先想到的是我需要手动选择它。答案here说,我可以这样更改模板:
mail(to: user.email,subject: "New Projects") do |format|
format.html { render layout: layout_name }
format.text { render layout: layout_name }
end
但是此语法与mailgun-ruby
期望的语法冲突。我不能忽略正文/文本设置方法,如果这样做,它会引发错误:Mailgun::CommunicationError (400 Bad Request: Need at least one of 'text' or 'html' parameters specified)
。
在上面的第一个示例中,如何将正确的布局传递给body_html
?也就是说,没有直接将html作为参数写入吗?
更新:我的rake routes
进行确认
new_user_confirmation GET /users/confirmation/new(.:format) users/confirmations#new
user_confirmation GET /users/confirmation(.:format) users/confirmations#show
POST /users/confirmation(.:format) users/confirmations#create
update_user_confirmation PATCH /users/confirmation(.:format) users/confirmations#update