Mailgun for Rails应用程序

时间:2015-07-26 05:52:38

标签: ruby-on-rails ruby email heroku mailgun

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

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

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

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

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

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

非常感谢你!

修改

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

1 个答案:

答案 0 :(得分:5)

Mailgun与Sendgrid或Mandrill没有区别,因此在寻找指导时,您也可以考虑这些解决方案。为您的用例提供最佳指南Sending Emails in Rails Applications。您还可以选择现有的宝石到Mailgun API Official gem或ActiveRecord integration

  

我已经实施的方法是设置区域,添加   gemfile然后通过Active Job设置后台处理器。一世   尚未设置后台处理器由于不确定是否   这是最好的方式。

是的,这是设置它的正确方法。在Rails 4.2之前,我相信大多数没有 ActiveJob 编码的人仍然喜欢 dj sidekiq resque ,它们非常受欢迎,几乎可以在每个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
  

旁注:沿途我也被告知&#34;不要触发电子邮件   从ActiveRecord回调发送 - 从控制器执行。&#34;一世   写下来指的是什么时候到来,在这里我= P   你同意这个说法吗?

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

如果您使用的是Heroku,请查看此Delayed Job guide。在Heroku上,你必须在单独的工作人员(不是免费的)中运行这些后台进程,因为一些具有成本效益的解决方案会在Running delayed jobs on Heroku for free处获得战利品。