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

我想将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个字符之后设置,并且在每个60个字符之后设置newm \r\n

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

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

PS Mail gem: https : //github.com/mikel/mail ,讨论x509和actionmailer的线程: 如何从Rails 3中的ActionMailer发送签名的电子邮件?

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

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

可能的解决方法:

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