Mailgun for Rails应用程序

Joe*_*vie 9 ruby email ruby-on-rails heroku mailgun

目前我正在努力将Mailgun应用到我的rails应用程序中,但我似乎对最好的方法感到困惑.

我已经实现的方法是设置区域,添加gemfile,然后通过Active Job设置后台处理器.由于不确定这是否是最好的方法,我还没有设置后台处理器.

我已经看到其他资源说我应该简单地使用Heroku Add-on,然后使用额外的最小编码.我还想提一下,我有Devise设置,所以我不需要为典型情况发送电子邮件.

正如你所看到的,我在这一点上很失落,只是想了解哪种方法最好.如果您碰巧了解自己或有充足的资源可以使用,请告诉我=)

旁注:我也被告知"不要触发从ActiveRecord回调发送的电子邮件 - 从控制器执行此操作." 我写下来指的是什么时候到了,在这里我= P你同意这个说法吗?

我可以添加代码,如果它会有所帮助,但我很困惑哪些代码实际上有用...

非常感谢!

编辑

还有一个问题:理想情况下,我希望能够向应用程序上的所有用户发送自定义电子邮件(IE:每周更新,新网站功能等).Mailgun甚至会成为这样做的正确方法吗?

ada*_*sko 5

Mailgun与Sendgrid或Mandrill没有区别,所以在寻找指导时,您也可以考虑这些解决方案.为您的用例提供最佳指南是 在Rails应用程序中发送电子邮件.您还可以选择现有的Gem到Mailgun API Official gem或ActiveRecord 集成.

我已经实现的方法是设置区域,添加gemfile,然后通过Active Job设置后台处理器.由于不确定这是否是最好的方法,我还没有设置后台处理器.

是的,这是如何设置它的正确方法.在Rails 4.2之前,我相信大多数没有ActiveJob编码的仍然喜欢dj,sidekiqresque这样的东西,它们非常受欢迎,几乎可以在每个Rails应用程序中找到.您可以将它们与ActiveJob的界面一起使用.然而,概念是一样的.

为了让您了解代码中缺少的部分,您可以执行以下操作(从第1个链接)

class ExampleMailer < ActionMailer::Base

  def sample_email(user)
    @user = user
    mg_client = Mailgun::Client.new ENV['api_key']
    message_params = {:from    => ENV['gmail_username'],
                      :to      => @user.email,
                      :subject => 'Sample Mail using Mailgun API',
                      :text    => 'This mail is sent using Mailgun API via mailgun-ruby'}
    mg_client.send_message ENV['domain'], message_params
  end
end
Run Code Online (Sandbox Code Playgroud)

旁注:我也被告知"不要触发从ActiveRecord回调发送的电子邮件 - 从控制器执行此操作." 我写下来指的是什么时候到了,在这里我= P你同意这个说法吗?

我绝对同意这个说法.有一点是将所有内容链接到ActiveRecord回调可能看起来真的很实用,但随后,随着应用程序的增长,您将看到自己放入条件语句或使用诸如状态机之类的东西来掩盖.背后的情况是,您可以从多个来源(用户注册,管理员导入等)创建应用程序中的记录,而不是在每种情况下您都希望发送电子邮件.此外,对于我和新的团队成员来说,直接在控制器代码中查看它更为实际,而不是通过模型的回调.最后,这也可以被视为个人偏好.

如果您使用的是Heroku,请查看此延迟工作指南.在Heroku上,你必须在单独的工作人员(不是免费的)中运行这些后台进程,因为一些经济有效的解决方案可以在Heroku上免费运行延迟的工作.