Ruby:Mail gem在邮件中添加60个字符后添加\ r \ n

时间:2011-07-12 11:21:06

标签: ruby ruby-on-rails-3 email gem actionmailer

我想将actionmailer_x509移植到Rails 3.为了做到这一点,我尝试使用签名电子邮件从大字符串创建Mail对象。

您可以在此行中看到此类创作:https://github.com/petRUShka/actionmailer_x509/blob/master/lib/actionmailer_x509.rb#L129

原始字符串( smime0 ):https://gist.github.com/1d2c84cc2e255be010a6

转储到文件的结果邮件对象( newm ):https://gist.github.com/4682fe88e8dcfeca60b2

例如,您可以看到 smime0 第26行与 newm 第40行之间的差异。在 smime0 \r\n在每个64个字符后设置,并且 newm \r\n在每个60个字符后设置。

这种行为破坏了签名。是否有可能改变这种行为?我试图找出如何关闭它,但失败了。

对于这一点,可能还有其他一些解决方法。

P.S。邮件gem:https://github.com/mikel/mail,讨论x509和actionmailer的帖子:How do I send signed emails from ActionMailer in Rails 3?

1 个答案:

答案 0 :(得分:3)

回车不应该是一个问题,因为解析器会知道它是base64编码的(并将丢弃\r\n)。

我认为错误来自Content-id。我看到在你的邮件样本中,newm添加了一个Content-ID字段,它改变了签名的消息(尝试删除Content-ID行并验证消息)。

可能的解决方法:

  • 修复Mail gem以防止其添加Content-ID
  • 在签名之前添加Content-ID,因为Mail会保留它(如果它存在)