【问题标题】:ruby mailman remove header from email bodyruby mailman 从电子邮件正文中删除标题
【发布时间】:2012-05-27 14:17:11
【问题描述】:

我正在尝试在我的 RoR 项目中显示电子邮件正文。

class IncomingMail
  def initialize(message, params)
    if person = Person.find_by_email(message.from)
      changeMessage = Message.where({person_id: person.id})

      #message = message.subject.force_encoding("UTF-8")

      message = message.body.encoded

      changeMessage.first.text = message
      changeMessage.first.backInMinutes = 0
      changeMessage.first.showText = 1
      changeMessage.first.doNotDisturb = 0
      changeMessage.first.save
    end
  end

但我也得到了电子邮件标题

> --e89a8ff1c0465030f204c082e054 Date: Mon, 21 May 2012 04:45:12 +0200 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1
> Content-Transfer-Encoding: 7bit Content-ID:
> <4fb9ac38c71d2_1e1343dd8042105b@ubuntu.mail> Text of the mail

如何删除标题?

主题是这样的

message = message.subject.force_encoding("UTF-8")

但不是身体。

【问题讨论】:

  • ActiveMailer 自动将主题和正文编码为 UTF-8。因此,您不必为此进行任何自定义编码。你能解释一下你在哪里得到标题吗?一封电子邮件将始终有一个标题,其中包含从、到、主题字段。
  • 我明白了......--e89a8ff1c0465030f204c082e054 日期:星期一,2012 年 5 月 21 日 04:45:12 +0200 Mime 版本:1.0 内容类型:文本/纯文本; charset=ISO-8859-1 > Content-Transfer-Encoding: 7bit Content-ID: > .......然后继续邮件的文本....但我只想文本而不是之前的想法
  • 问题依然存在。我想在其他地方显示电子邮件。但不是那个标题的东西只有干净的文本。

标签: ruby-on-rails ruby-on-rails-3 email email-headers mailman-gem


【解决方案1】:

我找到了解决办法!!!

改变:

message = message.body.encoded

到:

message = message.text_part.body.decoded

删除所有标题细节,只给我电子邮件的文本。

花了很长时间,但它成功了,我希望它也可以帮助其他用户

【讨论】:

  • 看来message.text_part 就足够了。我没有注意到.decoded 的任何影响。我也没有注意到.encoded.decoded 之间的任何区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2013-09-04
  • 2014-05-21
  • 1970-01-01
  • 2015-12-21
相关资源
最近更新 更多