在Rails中设置自定义全局电子邮件默认值的“最佳实践”方法是什么?

时间:2010-11-23 23:26:50

标签: ruby-on-rails ruby environment actionmailer

我正在从头开始新的Rails 3应用程序。

当我进行基本设置(配置宝石,会话等)时,我遇到了一些困扰我一段时间的事情。

我们当前的系统(Ruby脚本和Rails 2应用程序的混合物)向客户发送各种电子邮件/传真通知。在80%的案例中有一些常见的事情 - cc - 我们最终的某些电子邮件帐户和电子邮件签名。

以前我刚刚在environment.rb中定义了GLOBALS,例如

SYSTEM_EMAIL_SIGNATURE

SYSTEM_EMAIL_NOTIFY

稍后在邮件程序中使用它们,或者如果它是一个独立的脚本我有一个setup.rb文件 - 它有一堆常见的设置 - 包括一个带有这样的自定义电子邮件设置。

由于我正在从头开始重建这个应用程序并将所有脚本整合到一个ruby应用程序中 - 我试图想出一个更好的方法来实现这一点。

现在我正在设置一个具有action_mailer设置的email.rb初始化程序,我通过添加更多项目进行扩展:

      ########## Setup Global Email Defaults ##############
Site::Application.configure do
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method   = :smtp
  config.action_mailer.smtp_settings = {
    :address => 'mail.example.com',
    :port => 25,
    :domain => 'example.com',
    # These are custom to OUR setup - used later in the code 
    :default_from => 'it.systems@example.com',
    :default_notify => ["it.manager@example.com"],
    :default_signature => "
---------------------------
This is an automatic email.
If you have any questions please contact customer service 
at 1 (800) 888-0000 or go to http://www.example.com.
Thank you for your business!" 

  }



end  

这是一个好方法吗?或者这两种方法有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为你在default_from和default_notify的正确轨道上。 我不会使用SMTP设置;这些不是SMTP设置,它们只是一般的邮件设置。

我会在初始化程序中使用这样的东西:

MAILER_SETTINGS = YAML::load(open(File.join(Rails.root, "config", "mailer.yml")).read)[Rails.env]

使用yaml文件,如下所示:

development: &development
  default_from: foo@bar.com
  default_notify: ["foo@bar.com"]  

production:
  <<: *development
  default_from: production@bar.com

这允许您设置默认值,然后将它们级联并根据需要覆盖每个环境。

然而,对于签名,我只是将其移动到部分中,然后将其包含在您的邮件模板中。它们与其他视图一样,可以有布局,部分和所有这些。