我正在从头开始新的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
这是一个好方法吗?或者这两种方法有更好的方法吗?
答案 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
这允许您设置默认值,然后将它们级联并根据需要覆盖每个环境。
然而,对于签名,我只是将其移动到部分中,然后将其包含在您的邮件模板中。它们与其他视图一样,可以有布局,部分和所有这些。