電子メールの解析に関して、UTF-7はどの程度関連性がありますか?


8

私は最近、アプリケーションと男の子に受信メールを実装しましたが、地獄の門を開けましたか?それ以来、隔日でメールが届き、アプリが別の方法で失敗します。

それらの1つは、UTF-7としてエンコードされた電子メールです。ほとんどの電子メールは、ASCII、ラテンエンコーディングの一部、またはありがたいことにUTF-8として送信されます。

Hotmailのエラーメッセージ(メールアドレスが存在しない、割り当てが超過しているなど)は、UTF-7として送信されているようです。残念ながら、UTF-7はRubyが理解できるエンコーディングではありません。

> "hello world".encode("utf-8", "utf-7")
Encoding::ConverterNotFoundError: code converter not found (UTF-7 to UTF-8)

> Encoding::UTF_7
 => #<Encoding:UTF-7 (dummy)> 

私のアプリケーションはクラッシュせず、実際にはメールを非常にうまく処理しますが、潜在的なエラーに関する通知を送信します。

私はしばらくグーグルで過ごしましたが、少なくともRuby 1.9.3 Encoding :: Converterとしてではなく、変換を実装した人を見つけることができません。

だから、私の質問は、UTF-7で実際の人から実際のコンテンツを含む電子メールを受け取ったことがないので、そのエンコーディングはどの程度関連があるのでしょうか。安全に無視できますか?


3
UTF-7はほとんど使用されている任意の場所に IMAPなどの電子メールプロトコルの中を除いて
チャールズサルビア

回答:


10

UTF-7 の唯一の関連機能(UTF-8など)は、古き良きASCIIと同様に、7ビットエンコーディングであることです。つまり、8ビットクリーンでない システムで動作します。

これが今日でも重要な唯一の大規模システムはメールサーバーです(10〜20年前にこの問題が修正されなかった理由を聞かないでください。ほとんどのサーバーで修正されましたが、一部のサーバーではまだ修正されていません)。

つまり、UTF-7は電子メールシステムでのみ関連性があります。それ以外の場所では、UTF-8の方が適しています。


2
まあ、私は電子メールを解析しています。ほとんどの電子メールはUTF-8です。私の質問は、UTF-7として何個の電子メールを期待する必要があるかです。
pupeno 2012

7

Charles Salviaのコメントのおかげで、IMAPモジュールに次のことに役立つメソッドが見つかりました。

require "net/imap"
Net::IMAP.decode_utf7(mail_body)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.