如何使用Rails邮件gem替换电子邮件中的附件?

时间:2012-09-04 16:03:34

标签: ruby-on-rails ruby email

我的程序正在处理以文件形式发送的电子邮件(something.eml)。在某些情况下,我需要修改附件,然后重新保存文件。我一直在使用说明here作为我的代码的基础,但没有建议尝试完全按照我的意愿行事。我下面的代码成功删除了原始附件,然后尝试添加一个新附件。

@email.without_attachments!
@email.add_file(amended_version)

不幸的是,它在两个地方出了问题。首先,它似乎删除所有哑剧部分,而不仅仅是附件。任何文本/平原部分也被抛弃。其次,如果我通过重新加载修改后的.eml文件进行测试,则不再识别附件,尽管该文件位于文件中。

我添加了gist,其中包含我当前方法中的原始文件和修改过的文件。

有更好的方法吗?也许是一种直接替换附件的方法,而不是摆脱它并再次添加?

1 个答案:

答案 0 :(得分:3)

我对邮件格式化知之甚少,不知道为什么会这样,但确实如此。

我从without_attachments!方法中提取了我感兴趣的行,现在看起来效果很好。消息的非附件部分保持不变,消息重新读取正常。代码现在读取....

@email.parts.delete_if { |p| p.attachment? }
@email.add_file(amended_version)