3

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

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

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

我已经包含了一个要点,其中包括我当前方法的原始文件和修改文件。

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

4

1 回答 1

3

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

我只从 without_attachments 中提取了我感兴趣的行方法,现在它似乎工作正常。消息的非附件部分保持完整,并且消息重新读取正常。代码现在读取....

@email.parts.delete_if { |p| p.attachment? }
@email.add_file(amended_version)
于 2012-09-05T08:16:00.457 回答