【问题标题】:mail decode using base64 in Ruby在 Ruby 中使用 base64 进行邮件解码
【发布时间】:2016-09-14 05:47:52
【问题描述】:

我正在尝试实现解码邮件

--001a11419e22edc789053c4ccb1b 内容类型:文本/纯文本;字符集=UTF-8 这是众所周知的 --001a11419e22edc789053c4ccb1b 内容类型:文本/html;字符集=UTF-8

这是众所周知的

--001a11419e22edc789053c4ccb1b--

如何解码 UTF-8 格式的 html 格式 我也在尝试解码

 require 'base64'
 def decode(x)
  y = Base64.decode64(x)
 d = y.force_encoding('UTF-8')
return d

但错误是 UTF-8 中的无效字节序列 当我只使用 Base64.decode64(x) 然后它显示输出.. ����uӟ6�ٽ9��x�� = ��z{Sʗ�{�V���Z�ǭQ1|~��j 背后的原因是什么?

【问题讨论】:

  • 您的示例文本不是 Base64 编码的。您是否尝试解码此纯文本?
  • 我正在解码........ Content-Type: text/plain;字符集=UTF-8;格式=流动; delsp=yes Content-Transfer-Encoding: base64 U29tZW9uZSBoYXMgeW91ciBwYXNzd29yZA0KDQoNCg0KSGkgRGViYXNpc2gsDQpTb21lb25lIGp1 aWwgY2FuJ3QgcmVjZWl2ZSByZXBsaWVzLiBGb3IgbW9yZSBpbmZvc --94eb2c110582272b2b053c143a89
  • 对不起,我还是不明白你解码的内容。 U29tZW9uZSBoYXMgeW91ciBwYXNzd29yZA0KDQoNCg0KSGkgRGViYXNpc2gs‌​DQpTb21lb25lIGp1 aWwgY2FuJ3QgcmVjZWl2ZSByZXBsaWVzLiBGb3IgbW9yZSBpbmZvc 只是 base64 编码部分。所以你只能解码这部分而不是整个字符串。您是否将整个字符串发送到 Base64.decode64 ?在这种情况下,您将得到一个无效的结果。
  • 我已经解码 y = Base64.decode64('U29tZW9uZSBoYXMgeW91ciBwYXNzd29yZA0KDQoNCg0KSGkgRGViYXNpc2gsDQpTb21lb25lIGp1') 但问题是当我存储在变量 (x) 中的所有字符串显示错误时。我解码整个字符串

标签: ruby-on-rails utf-8 decode


【解决方案1】:

您不能仅使用 Base64.decode64 解析电子邮件。一些电子邮件中只有一小部分是 base64 编码的。您必须提取这些部分,然后您可以使用Base64.decode64 对提取的部分进行解码。

如果您想解析一封电子邮件,您可以“手动”或使用现有的 gem 之类的,例如 https://github.com/mikel/mail

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2020-04-29
    相关资源
    最近更新 更多