代码之家  ›  专栏  ›  技术社区  ›  konung

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

  •  2
  • konung  · 技术社区  · 14 年前

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

    在我进行基本设置(配置gem、会话等)时,我遇到了一些困扰我很久的事情。

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

    以前我只是在environment.rb中定义了GLOBALS,比如

    SYSTEM_EMAIL_SIGNATURE
    

    SYSTEM_EMAIL_NOTIFY
    

    稍后在mailers中使用它们,或者如果它是一个独立的脚本,那么我有一个setup.rb文件,它有很多常见的设置,包括一个has,它有这样的自定义电子邮件设置。

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

    现在,我正在设置一个email.rb初始值设定项,它具有action\u mailer设置,我通过添加更多项扩展了该设置:

          ########## 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 回复  |  直到 14 年前
        1
  •  2
  •   Chris Heald    14 年前

    我认为你在正确的轨道上默认从和默认通知。 我不会使用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
    

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

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