具有不同布局的 Rails 邮件程序

2024-01-28

我在通知程序模型中对所有电子邮件(20 多封电子邮件)使用一种布局...但是有时我只想发送一封纯文本电子邮件,根本没有布局或 html。我似乎无法弄清楚如何?如果我尝试发送纯文本电子邮件,我仍然可以获得布局以及电子邮件中的所有 HTML。

我正在使用 Rails 2.3.8。

我在这里读到了这个猴子补丁...但这似乎表明新版本的 Rails 已经解决了这个问题?如果我能避免的话,我真的不想猴子补丁。

Rails - 使用邮件模板为多部分电子邮件设置多个布局 https://stackoverflow.com/questions/364162/rails-setting-multiple-layouts-for-a-multipart-email-with-mailer-templates

  layout "email" # use email.text.(html|plain).erb as the layout


  def welcome_email(property)
    subject    'New Signup'
    recipients property.email
    from       '[email protected] /cdn-cgi/l/email-protection'
    body       :property => property
    content_type "text/html"
  end

  def send_inquiry(inquire)
    subject    "#{inquire.the_subject}"
    recipients inquire.ob.email
    from       "Test on behalf of #{inquire.name} <#{inquire.email}>"
    body       :inquire => inquire
    content_type "text/plain"

  end

我也有2个文件。

email.text.html.erb
email.text.plain.erb

它总是使用 text.html.erb ...即使 content_type 是“text/plain”


编辑:弄清楚了,布局遵循与电子邮件模板不同的命名方案。只需将它们重命名如下:

layout.text.html.erb    => layout.html.erb
layout.text.plain.erb   => layout.text.erb

如果您使用以下命令,我还犯了手动定义零件的错误:

part :content_type => 'text/plain',
     :body => render_message('my_template')

然后 Rails 无法确定您的部分的 content_type 并且它假定它是 HTML。

在我改变了这两件事之后,它对我有用!

原回复如下..


过去我曾多次为这个问题苦苦挣扎,通常最终都会得到某种不干的快速而肮脏的解决方案。我一直以为我是唯一遇到这个问题的人,因为谷歌在这个问题上没有发现任何有用的东西。

这次我决定深入研究 Rails 来解决这个问题,但到目前为止还没有取得多大成功,但也许我的发现会帮助其他人解决这个问题。

我发现在 ActionMailer::Base 中,#render_message 方法的任务是确定正确的 content_type,并应将其分配给 @current_template_content_type。 #default_template_format 然后返回布局的正确 mime 类型,或者如果未设置 @current_template_content_type,则默认为 :html。

这就是 ActionMailer::Base#render_message 在我的应用程序中的样子 (2.3.5)

  def render_message(method_name, body)
    if method_name.respond_to?(:content_type)
      @current_template_content_type = method_name.content_type
    end
    render :file => method_name, :body => body
  ensure
    @current_template_content_type = nil
  end

问题在于 method_name 似乎是一个字符串(本地视图的名称,在我的例子中为“new_password.text.html”),并且字符串当然不会响应 #content_type,这意味着 @current_template_content_type 将始终保持为零,因此#default_template_format 将始终默认为 :html。

我知道,离实际的解决方案还差得远。 ActionMailer 的内部结构对我来说太不透明了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有不同布局的 Rails 邮件程序 的相关文章

  • Hudson 和电子邮件通知

    我可以覆盖每个作业的 Hudson 设置 系统管理员电子邮件地址 吗 阅读了一些源代码http sorcerer jenkins ci org http sorcerer jenkins ci org and hudson tasks Ma
  • Rails 模型测试 - 模拟与工厂

    Rails 测试模拟对象与使用工厂对象的最佳实践是什么 应该嘲笑only当模型可能转到外部源时使用 或者 您是否仅在测试实际模型并使用模拟来处理其他所有内容时才使用工厂 例如 如果我们有一个包含客户和订单的销售系统 那么当我们测试客户模型时
  • Rails_admin 中的范围作为过滤器

    我在我的应用程序中使用rails admin 我的模型上有一些范围 以下是一个示例 class User lt ActiveRecord Base scope unconfirmed where confirmed at IS NULL e
  • 如何使用 ActiveAdmin 创建 STI 子类的对象

    给出以下设置 当前不起作用 class Employee lt ActiveRecord Base end class Manager lt Employee end ActiveAdmin register Employee do for
  • android:widgetLayout 和 android:layout 之间的区别?

    我得到一些奇怪的配置 其中 widgetLayout 配置列表项的内部空间 而布局配置整个项目列表和屏幕背景 有人能真正解释一下什么是 widgetLayout 吗 android layout 整个首选项的布局 包括标题 摘要和小部件 a
  • 新手:我的例子中的文本替换

    In my 红宝石 on Rails应用程序中 我的助手中有一个方法 它通过以下方式打开文件 content File open myfile txt The 文件内容就好像 my car my seat my age my son my
  • 2015 年重新审视 Ember Handling 401

    我可以在 Ember Ember Data 中找到大量询问 回答如何从 Rails 后端处理 401 的老问题 许多 如果不是全部的话 在这一点上似乎已经过时了 我已经尝试了我能找到的一切 Ember 数据处理 401 https stac
  • 当我运行捆绑安装时,Nokogiri“无法构建 gem 本机扩展”

    我在跑bundle install我收到此错误 Building nokogiri using system libraries Gem Ext BuildError ERROR Failed to build gem native ext
  • 如何在 Rails 中制作动态下拉菜单?

    我正在开发一个电子商务项目 其中将有用于选择尺寸的单选按钮 我有一个数量下拉菜单 我想根据用户所选尺寸的可用库存使此下拉列表动态化 谁能告诉我如何在 Rails 上做到这一点 不会用大量的 javascript 扰乱我的视图文件 如果您使用
  • Flutter“Mailer”API 多图像附件

    我正在制作一个简单的应用程序 用于从用户获取个人信息和图像数量 然后通过后端邮件 API 通过一键单击按钮发送它们 到目前为止 我可以通过邮件获取和发送 FormData 但我不知道如何发送图像数组 我已经尝试了几个 API 但 Maile
  • Rails 日志太详细

    如何防止 Rails 记录过多日志 这是我的 production log 文件中的典型跟踪 许多部分 缓存命中 它在开发中很有用 但我不希望在我的生产环境中使用它 Started GET redirected true for 46 19
  • Exposé 布局算法

    我正在制作一些项目 其布局类似于 Mac OS X 在 Expos 中对窗口所做的操作 它适应项目的长宽比和可用区域的长宽比 基本上 可用区域分为行和列 每个单元格 行和列的交集 中放置一个项目 这些项目必须保持其纵横比 此处width h
  • 从 Facebook 重定向 URL 中删除“#_=_”[重复]

    这个问题在这里已经有答案了 根据https developers facebook com blog post 552 https developers facebook com blog post 552 FB Graph API 现在附
  • Rails 的 Puma Systemd 配置不起作用

    我已经完成了一个使用 Ruby on Rails 构建的应用程序 现在我想将其托管在 AWS 上的 EC2 实例上 我已经为其配置了服务器 并且正在使用pumaHTTP服务器作为应用服务器 在生产中启动应用程序总是需要我运行RAILS EN
  • AttributeError:发送电子邮件时“列表”对象没有属性“编码”

    我想要这段代码 我可以有一个 csv 文件 其中一行电子邮件旁边有一排姓名 然后通过电子邮件发送列表中的每封电子邮件 但消息中包含每个姓名 这是我的代码 import smtplib from email mime text import
  • 查询参数和assert_generates/assert_routing - 我缺少什么?

    我想我已经介绍了使用查询参数测试路由的排列 但没有一种方法通过 在我的 paths rb 中 我有以下内容 resources items 然后对于我的功能测试我有 require ruby debug require test helpe
  • 如何设置管理员批准模型的编辑

    我需要一个普通用户可以编辑模型的系统 但编辑实际上只有在管理员批准后才会发生 我发现了一颗宝石 叫做纸迹 https github com airblade paper trail它确实有模型版本控制 但不具体支持我想要做的事情 我想知道其
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • 无法验证 CSRF 令牌的真实性 Rails/React

    我的 Rails 应用程序中有一个 React 组件 我正在尝试使用它fetch 发送一个POST对于我在本地主机上托管的 Rails 应用程序 这给了我错误 ActionController InvalidAuthenticityToke
  • NoMethodError 未定义方法“名称” for nil:NilClass

    我有两个模型帖子和类别 我试图在我的索引和帖子显示视图中显示每个帖子的类别名称 我正在使用表连接 但问题是 虽然在我的显示视图中类别显示正确 但它在索引视图中给出了 NoMethodError undefined method name f

随机推荐

  • Android 在通知单击时打开特定选项卡片段

    我有一个使用操作栏选项卡的 Android 应用程序 还有一个通知系统 我想在单击通知时直接打开特定选项卡 如何做到这一点 因为通知挂起意图只能打开活动 而我的主要活动包含 3 个选项卡的 3 个片段 以下是选项卡主要活动的代码 publi
  • Ionic v2 按钮文本大写

    在我的 ionic v2 应用程序中有一个按钮 无论我输入哪个文本 它总是大写 我不想添加 css utilities 因为我混合了小写和大写单词 这是我的代码
  • SQLiteConstraintException 不要进入 catch 内部

    当我运行该代码时 db insert 内部出现异常 08 29 15 40 17 519 E SQLiteDatabase 3599 android database sqlite SQLiteConstraintException col
  • Mono .EXE 程序集集资源管理器图标

    在Linux上使用gmcs编译时 如何设置最终EXE将使用的资源管理器图标 我有一个 ico 文件要附加到输出 exe 答案必须是可自动化构建并在 Linux 上执行 无需 wine 构建机器架构不是 x86 可以使用针对 Windows
  • 将 XML 值反序列化为枚举时处理额外空格

    我一直想知道是否可以做到这一点 当 XML 响应有不正确的值需要映射到枚举时 这将是一个很大的帮助 我具体处理的情况是当期望值有尾随空格而枚举期望它没有尾随空格时 XML
  • Android 编程中 b/w app:theme 和 android:theme 有什么区别

    我看到有人写这个 app theme style xyz 另一方面 有些人写 android theme style xyz 这2个代码有什么区别 app and android实际上是命名空间 你可以用同样的方式来思考它们packages
  • IdHTTP 如何发送原始正文

    我如何使用IdHTTP发送消息为PostMan下面的dos 我的第一次尝试如下 function TIdFoo SendIM const AID AMessage string Boolean const URL https URL com
  • SOM(自组织映射)和 K 均值有什么区别?

    stackoverflow中只有一个与此相关的问题 更多的是关于哪个更好 我只是不太明白其中的区别 我的意思是它们都使用向量 这些向量被随机分配给集群 它们都使用不同集群的质心来确定获胜的输出节点 我的意思是 差异到底在哪里 在 K 均值中
  • 如何正确验证验证码?

    我有使用验证码验证的登录表单 我在 php 文件中编写验证时遇到问题 如果验证码输入不正确 则会出现错误 目前我已经验证 如果没有输入验证码 它会显示错误 但是当我输入一些错误的验证码时 登录将继续并将用户登录到站点 这是我的代码 感谢任何
  • Maven 依赖范围未按预期工作

    Maven 2 2 1 声称支持版本范围 参见例如http www sonatype com books mvnref book reference pom relationships sect project dependency htm
  • Google Contacts API - 无法刷新访问令牌

    我们将 Google Contacts API 与 OAuth2 结合使用 credential new GoogleCredential Builder setTransport new NetHttpTransport setJsonF
  • 如何将本地托管的MySQL数据库与docker容器连接

    Through docker compose yml我能够运行该应用程序 现在我们想要将应用程序转移到生产环境 但我们不想使用容器数据库 那么有什么方法可以让我可以使用以下命令将本地 MySQL 数据库与应用程序连接起来docker com
  • Laravel maatwebsite/excel Composer 在 mac 中安装错误

    尝试通过 Mac 版 Composer 在 XAMPP 7 1 32 rev 1 中安装 maatwebsite excel 如何在 XAMPP for mac 中启用这些扩展或者是否存在任何其他问题 请帮我 composer instal
  • 写重的elasticsearch

    我正在使用 kafka storm 和 Elasticsearch 编写一个实时分析工具 并且想要一个针对大约 50K 秒插入进行写入优化的 Elasticsearch 出于 POC 的目的 我尝试将批量文档插入到 Elasticsearc
  • magento管理部分添加类别时出现致命错误

    我在 Magento 管理部分遇到一个错误 当我尝试创建一个类别时 它显示以下致命错误 致命错误 在第 331 行对 C wamp www magento lib Varien Data Tree Dbp php 中的非对象调用成员函数 g
  • 我如何使用 jQuery 来解析 XML,就像我在这里一样

    这个 或其某些变体 是由我的 PHP 脚本输出的 请注意 某些标签在不同的上下文中使用相同的名称
  • 输入文本并保存到文件

    以下函数创建一个新的文本文件并允许用户输入要保存到文件中的文本 我遇到麻烦的主要问题是 1 允许单词之间有空格 2 按 Enter 保存文本 而不是转到新行 void new file void char c 10000 char file
  • 刷新令牌后,Azure AD B2C 访问令牌声明不会更新

    我们在应用程序中使用 Azure AD B2C 我们授权用户使用API https tenant b2clogin com tenant onmicrosoft com policy oauth2 v2 0 authorize client
  • Drupal 迁移 - 现在只有首页可以使用

    我刚刚从 ISP 迁移了 Drupal 站点 到专用的 Linux CentOS 服务器 MySQL 数据库已配置并生成首页 没有错误 问题是只有主页可以使用 所有其他页面均显示 404 页面未找到错误 所以 mysite com 可以工作
  • 具有不同布局的 Rails 邮件程序

    我在通知程序模型中对所有电子邮件 20 多封电子邮件 使用一种布局 但是有时我只想发送一封纯文本电子邮件 根本没有布局或 html 我似乎无法弄清楚如何 如果我尝试发送纯文本电子邮件 我仍然可以获得布局以及电子邮件中的所有 HTML 我正在