【问题标题】:Rails 3: ActionMailer Default Layout with Inline AttachmentsRails 3:带有内联附件的 ActionMailer 默认布局
【发布时间】:2014-01-15 14:35:50
【问题描述】:

我的 Rails 3.2 应用程序中有许多邮件程序,我希望它们都使用相同的电子邮件布局。该布局包括页眉和页脚,其中包括要内联使用的图像。我想遵循 Rails 的 DRY 原则,但我不完全确定最佳实践是什么。

正如this answer 指出的那样,我可以使用AbstractController::Callbacks 创建before_filter 来添加内联附件。但是我该如何做到这一点以及在一个模块中设置布局,然后我可以将其包含在邮件中?

我目前的想法是创建一个名为DefaultMailer 的新邮件程序类,然后让我想使用的所有邮件程序都继承自该类的布局。或者创建一个可以处理这些任务的关注点。在尝试使用其中一种技术一起破解某些东西之前,我想我会在这里询问是否有人之前成功完成过此操作以帮助指导我。

【问题讨论】:

    标签: ruby-on-rails-3 layout actionmailer email-attachments


    【解决方案1】:

    AFAIK 从其他邮件程序继承时存在一些问题(即不继承设置)。

    常见的解决方案是创建一个邮件程序基础模块。这是来自现有项目的 sn-p:

    module MailerBase
      extend ActiveSupport::Concern
    
      included do 
        helper :application
        layout 'mailer'
        default from: "#{AppConfig.application_name} <#{AppConfig.mailer_sender}>"
      end
    end
    

    您可以将此与您的回调结合起来,尽管包含远程图像是更常见且可以说是更好的解决方案。

    【讨论】:

    • 我使用asset_sync gem 将我的资产部署到 CDN,所以我仍然会使用远程图像。附件的主要目的是保证如果图像移动,它们仍将在电子邮件中正确呈现。因为这不是一个大问题,所以我还没有尝试将它与AbstractController::Callbacks 结合使用,但是使用关注点对布局和默认值有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2011-07-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多