使用mailgun-ruby

我想使用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 
whui0919 回答:使用mailgun-ruby

从宝石的角度看,它似乎不受支持。

一种方法是使用您喜欢的模板引擎,并将输出提供给body_html

您不是在告诉它,而是在查看方法名称,我想您正在使用Devise gem,并且您想发送其内容。

这是使其工作(不尝试)的方法:

def confirmation_instructions(record,token,opts={})
  email_html_body = ERB.new(File.read('devise/mailer/confirmation_instructions.html.erb'))
                       .result_with_hash(
                         email: current_user.email,resource: resource,token: @token
                       )

  # ...
  mb_obj.body_html(email_html_body)
  # ...
end
,

哇,所以...启用默认mail()语法确实仍可与Mailgun一起使用。我不知道为什么不是第一次尝试,但是我认为这与我没有将 production.rb 配置设置为config.action_mailer.delivery_method = :mailgun的事实有关。>

本文链接:https://www.f2er.com/3113669.html

大家都在问