给定值:message = Mail.new(params[:message])

如图所示:http://docs.heroku.com/cloudmailin

它展示了如何获取信息.正文为HTML,如何获得纯文本版本?

谢谢

推荐答案

上述代码:

message = Mail.new(params[:message])

将根据完整消息创建mail gem的新实例.然后,您可以使用该消息上的任何方法来获取内容.因此,您可以使用以下方法获取普通内容:

message.text_part

或者使用

message.html_part

这些方法只是猜测并找到文本/纯文本或文本/html内容类型的多部分消息的第一部分.CloudMailin还通过params[:plain]和params[:html]提供了这些方便的方法.值得记住的是,消息永远不能保证包含普通或html部分.可以肯定的是,使用以下内容可能是值得的:

plain_part = message.multipart? ? (message.text_part ? message.text_part.body.decoded : nil) : message.body.decoded
html_part = message.html_part ? message.html_part.body.decoded : nil

作为旁注,在使用这些方法时,从消息中提取内容编码也很重要,并确保将输出编码为所需的编码方法(如UTF-8).

Ruby-on-rails相关问答推荐

方法和括号之间没有空格时出错

将两个日期之间的差值转换为Ruby中的iso8601持续时间(如果需要,还可以使用Rails)

ruby on rails 和 javascript 之间的时间转换反之亦然?

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

使用devise gem点击确认链接后避免登录?

Ruby on Rails 的 varchar 迁移问题

将 Amazon SES 与 Rails ActionMailer 结合使用

如何在 rspec 中运行单个测试?

在 rake 任务期间关闭观察者的简单方法?

Rails 错误:无法批量分配受保护的属性

使用god 监控独角兽 - 以非零代码开始退出 = 1

通过重定向使闪存哈希保持不变

rails active admin 部署:找不到文件'jquery-ui'

counter_cache 实现的问题

Rails 4,Capistrano 3.0.0,无法加载这样的文件 - 部署

在 Rails 中命名布尔列

如何在每个操作的基础上禁用 Ruby on Rails 的日志(log)记录?

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

按照给定 ID 数组的顺序按 ID 查找模型记录

Ruby/Rails CSV 解析,UTF-8 中的无效字节序列