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

pet*_*hka 5 ruby email gem actionmailer ruby-on-rails-3

我想将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

例如,你可以看到26行之间的差别smime0和线40 NEWM.在每个64个字符之后设置smime0 \r\n,并且在每个60个字符之后设置newm \r\n.

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

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

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

小智 3

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

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

可能的解决方法:

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