【问题标题】:Why would I use Mandrill as opposed to the built in ActionMailer?为什么我要使用 Mandrill 而不是内置的 ActionMailer?
【发布时间】:2016-01-09 11:09:34
【问题描述】:

我已经阅读了这两种服务的文档,但我只是没有看到使用 Mandrill 的好处,而不是使用 Rail 的 ActionMailer 进行交易服务。我已经可以使用 ActionMailer 自定义电子邮件并将其发送出去。服务之间的差异是数量问题吗?如果是这样,我什么时候需要为 Mandrill 切换 ActionMailer?

这里的教程有点混乱,因为它集成了 ActionMailer 和 Mandrill。 MailChimp/Mandrill tutorial

有人可以帮我解释一下区别吗?对于我的现实生活目的,我想做的就是向人们发送电子邮件以重新验证他们的帐户,根据我的研究,这似乎是适合 MailChimp 的工作。

【问题讨论】:

    标签: ruby-on-rails mailchimp mandrill


    【解决方案1】:

    基本上,mailchimp/mandrill 是一种 Saas 产品,它们为您提供 SMTP 服务,如亚马逊 SES 服务。 ActionMailer 是 Rails 的一部分,允许与邮件系统交互。

    从其文档中,您可以看到以下选项:

    Defines a delivery method. Possible values are:
    
        :smtp (default), can be configured by using config.action_mailer.smtp_settings.
        :sendmail, can be configured by using config.action_mailer.sendmail_settings.
        :file: save emails to files; can be configured by using config.action_mailer.file_settings.
        :test: save emails to ActionMailer::Base.deliveries array.
    

    SMTP 的默认设置是使用 localhost(假设您自己的服务器运行 SMTP 服务器。

    在您的情况下,您应该使用 mailchimp 来传递消息,但您仍然需要使用 actionMailer 来创建消息/电子邮件本身。

    它允许您卸载发送部分,从而降低复杂性。

    【讨论】:

    • 还值得一提的是,从服务器同步发送电子邮件通常是一个坏主意(减慢服务器速度,最好分离关注点)。建议使用外部服务或使用 .delay 与 sidekiq 异步发送。
    【解决方案2】:

    对于您所描述的用途,听起来动作邮件程序很好。

    但是,如果

    1. 您对管理邮件服务器不感兴趣
    2. 不想花时间试图弄清楚是否真的发送了电子邮件(根据客户报告)
    3. 想要轻松地为每个客户端设置邮件配额

    那我推荐山魈。我们已经开始使用它来邮寄,从那以后就再也没有回头过。您可以获得可靠性、专家建议/邮件系统设置以及对我来说最大的功能:交付报告。

    Mandrill 允许您通过 REST API 或 SMTP 与他们的系统进行交互。如果您使用他们的 SMTP,您仍然需要使用 ActionMailer 来传递电子邮件。您需要做的就是将您的 production.rb 文件设置为指向 Mandrill:

      config.action_mailer.smtp_settings = {
        :address   => "smtp.mandrillapp.com",
        :port      => 25, # ports 587 and 2525 are also supported with STARTTLS
        :enable_starttls_auto => true, # detects and uses STARTTLS
        :user_name => "username",
        :password  => "password", # SMTP password is any valid API key
        :authentication => 'login', # Mandrill supports 'plain' or 'login'
        :domain => 'example.com', # your domain to identify your server when connecting
      }
    

    总结一下;在我看来,这不是数量的问题,而是方便的问题。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-25
      • 2013-12-07
      • 2017-11-07
      • 2016-08-13
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多