QA@IT
«回答へ戻る

回答を投稿

ActionMailer で試したわけではないのですが、mail-iso-2022-jp gem を使うと、ISO-2022-JP のメールでも Mail::Message#encoded で例外が起こらなくなります。

本文もヘッダもエンコーディングが ASCII-8BIT で、ヘッダはなぜか 2 重に B 符号化されていたりと、扱いが面倒ですが、ご参考になれば。

require "mail"
require "mail-iso-2022-jp"

iso2022jp_mail_string = File.read("mail.eml")
mail =  Mail.new(iso2022jp_mail_string)

puts mail.encoded
puts mail.body.to_s.encode("utf-8", "iso-2022-jp")
puts Mail::Encodings.b_value_decode(Mail::Encodings.b_value_decode(mail.subject))
ActionMailer で試したわけではないのですが、mail-iso-2022-jp gem を使うと、ISO-2022-JP のメールでも Mail::Message#encoded で例外が起こらなくなります。

本文もヘッダもエンコーディングが ASCII-8BIT で、ヘッダはなぜか 2 重に B 符号化されていたりと、扱いが面倒ですが、ご参考になれば。

```ruby
require "mail"
require "mail-iso-2022-jp"

iso2022jp_mail_string = File.read("mail.eml")
mail =  Mail.new(iso2022jp_mail_string)

puts mail.encoded
puts mail.body.to_s.encode("utf-8", "iso-2022-jp")
puts Mail::Encodings.b_value_decode(Mail::Encodings.b_value_decode(mail.subject))
```