目前我正致力于将Mailgun应用到我的rails应用程序中,但我似乎对最好的方法感到困惑。
我已经实现的方法是设置区域,添加gemfile,然后通过Active Job设置后台处理器。由于不确定这是否是最佳方式,我还没有设置后台处理器。
我见过其他资源说我应该简单地使用Heroku Add-on然后使用额外的最小编码。我还想提一下,我有Devise设置,所以我不需要为典型情况发送电子邮件。
正如你所看到的,我现在很失落,只是想了解哪种方法最好。如果您碰巧了解自己或有充足的资源可以使用,请告诉我=)
旁注:我也被告知“不要触发从ActiveRecord回调发送的电子邮件 - 从控制器执行此操作。”我写下来指的是什么时候到了,在这里我= P你是否同意这个陈述?
我可以添加代码,如果它会有所帮助,但我很困惑哪些代码实际上有用......
非常感谢你!
乔
修改
还有一个问题:理想情况下,我希望能够向应用程序上的所有用户发送自定义电子邮件(IE:每周更新,新网站功能等)。 Mailgun甚至会成为这样做的正确方法吗?
答案 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处获得战利品。