ブログ2022-11-16サーバーのメールボックスが3.9Gbyteになっていた!カテゴリー:EY-OfficeツイートEY-Officeではある目的にレンタルサーバーのメールを使っています。通常はそのサーバーからメールはGMailに転送して使っています。最近どうも転送されないメールがあるようなので調査しようと、そのレンタルサーバーの提供するWebメールを開いたのですが数分待たされた後エラーが発生して読めませんでした。レンタルサーバーの管理画面を見るとメールボックスの大きさが3.9Gbyteになっていました❗メールは転送しているだけで削除してなかったので数年分のメールが溜まったままでした。😅それではとMacにメールソフトをインストールしIMAPでアクセスしようとしましたが、やはりエラーが発生し読めませんでした。POP3でアクセスしましたが全メールを取得し始め、いつ終わるのか判らないので中断しました。古いメールの削除は、上に書いたサンプルコードでほぼ完成ですが、最近のメールの一覧は日付、送信元アドレス、件名などを表示する必要があります。m[0].subjectで簡単に取得できました。たくさんのメールの一覧を表示してみると問題がおきました。件名(サブジェクト)が無い場合がありました、さらに文字コードの問題もあります。Rubyはいろいろな日本語コードに対応していますが、おかしな文字コードがあると例外が発生してしまいます。今回の一覧表示は以下のように落ち着きました。NKFは昔からプログラミングされてきた方にはおなじみだと思いますが、元のエンコーディングが判らなくても適度に変換できるので私は好きです。endendちょっと色気を出したら地獄がここまで、安易にできたので一覧表示に少し手を入れて選択したメールの本文を表示する機能を追加してみたら大変でした。m[0].text_part.decodedでデコードされた本文が取得できますが、メールによっては.text_partでは本文が取得できませんでした。このアプリはターミナルベースのアプリなのでHTMLメールをどうしようか悩んだのですが、html2textというgemを発見したのでこれを使いHTMLメールもテキストで表示する事にしました。メール本文の表示は以下のようなコードに落ち着きました(まだまだ完成度が低いです)。sendメールは歴史が長く、いろいろな文字コード、Base64/Quoted-printableなどのエンコーディング、マルチパートなど色々なバリデーションがあり、完璧に表示するのは大変そうです。メールソフトを作っている方の苦労には頭が下がります。