从数据库中检索和解析 MIME 电子邮件
Posted
技术标签:
【中文标题】从数据库中检索和解析 MIME 电子邮件【英文标题】:Retrieving and parsing a MIME email from a database 【发布时间】:2010-11-28 18:08:30 【问题描述】:给定的任务:一封电子邮件以一个或多个(固定长度)块的形式逐字节存储在数据库中。该邮件将从该数据库中检索,并将其内容显示给用户。
我没有问题将遗留数据库包装在 ActiveRecord 模型中,连接存储的块等等。我真的不知道从哪里开始 MIME 解析部分。我想到了可能有一个专用的 EMail 类,我可以使用存储在数据库中的数据进行初始化,并且该类将允许我查看邮件包含哪些 MIME 部分并允许我显示,例如,text/*
部分。
现在看来 ActionMailer 能够解析收到的邮件,但接收邮件的文档似乎相当,呃,“稀疏”,它只是提到从 STDIN 接收邮件。
如果我可以将其内容作为单个字符串、变量、查询结果或类似的东西提供,我如何在 Rails 中解析和显示 MIME 邮件(或其中的一部分)?
【问题讨论】:
【参考方案1】:看看MMS2R。
我最近一直在用它来解析电子邮件,它做得非常好。
【讨论】:
【参考方案2】:我做错了。 Rails 带有TMail library,它完全能够解析 MIME 电子邮件。基本工作流程就像连接一条存储消息中的块并将它们传递给TMail::Mail.parse
一样简单,如下所示:
email = TMail::Mail.parse(StoredMessage.find(:all,
:conditions => ["mail_id = ?", "oyByGqacG73b"],
:order => "chunk_ind").collect(&:mail_text).join)
email.body #=> this is your test body
email.subject # => test subject
email.has_attachment? #=> true
email.attachments.first.original_filename # => bulkfile
我真的很抱歉错过了 Rails 中的整个库。
【讨论】:
"has_attachments?" (复数)是方法的正确名称【参考方案3】:"has_attachment*s*?" (复数)是方法的正确名称
【讨论】:
以上是关于从数据库中检索和解析 MIME 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章