メールから添付ファイルを切り出す方法

やりたいこと

  • 古いメールソフトを使っているので、一部のメールソフト(おそらくApple Mail)で作成した添付ファイルの名前が正しくデコードできない問題がある。
  • Outlookを対象にした同種ツールはあるので、Email Converter .NETなどを使うのが手っ取り早いけど、拡張子を.emlに変更しないとならないなど、日常利用しようとすると細かいところでストレスがある。かといって、CyberchefとかBulk_Extractorを持ち出すのは明らかにやり過ぎ。コマンドラインワンライナーとか、バッチファイルにドラッグ&ドロップするくらいでなんとかならないものだろうかと。
  • Windowsで動作するコマンドラインツールの定番はmpack/munpackだけど、デコードは問題なく出来るものの、ファイル名の復元がうまく行かない。読めれば良いだけなら十分だけど、業務利用だとコミュニケーション上のトラブルに繋がるのでこれもアウト。
  • そうこう調べている内に、UUDeviewというWindows 95時代のリリースされたと思われるプログラムに行き着きました。GUI版もあるようだけど、日本語ファイル名で利用すると正常利用しないようなので、コマンドライン版に落ち着きました。いや、こういうツールを継続公開してくれているのは本当にありがたいです。

Email Converter .NET 15.1

softaro.net

mpack 1.7

sourceforge.net

UUDeview

superuser.com
www.fpx.de
www.miken.com

  • こんなバッチファイルを作成して、ショートカットを【送る】に登録しておけば十分役割を果たしてくれます。
E:\Bin>cat decode-attachment.bat
E:\Bin\uudeview.exe -i -p z:\ %1

Macで作成したファイル名の濁点・半濁点が問題らしい

  • 例えば、「スケジュール」と「スケシ゛ュール」の違い。後者をメールソフトの機能を使って添付ファルとして保存しようとすると文字化けする。ソースからUUDeviewでデコードしても、ファイル名を見ると後者になっているので本質的には解決していない。
  • 原因は、MacOSで作成したファイル名はUTF8-MAC型式「スケシ゛ュール」になっていて、それをUTF-8N型式「繧ケ繧ア繧キ繧帙Η繝シ繝ォ」にすると文字化けしているようにみえるだけなのか。
z:\>echo "スケシ゛ュール" | nkf32 -w
"繧ケ繧ア繧キ繧帙Η繝シ繝ォ"

z:\>echo "繧ケ繧ア繧キ繧帙Η繝シ繝ォ" | nkf32
"スケシ゛ュール"
  • これ、抜本的に対応するにはどうすればよいのだろうか。Windowsユーザとしては、添付ファイルを展開したときに「スケジュール」になってくれればよいのだけど、必要なのは文字コードの変換ではなくて文字列の置換だよねえ。添付ファルを展開したときに「スケシ゛ュール.txt」でも「繧ケ繧ア繧キ繧帙Η繝シ繝ォ.txt」でも問題があって、「スケジュール.txt」になっていて欲しいわけで。まあ、前者の方が後者よりちょっとだけマシというだけか。
  • ここまで調べて、メールソフト側は正しくUTF-8N型式で添付ファイルを切り出していたことが分かったので、受け取った側でどうにかする必要があるわけですな。

FileNameNormalizer

www.gesource.jp
apps.microsoft.com

  • UTF8-MAC型式のファイル名を正規化してくれるアプリを発見。
  • 長らく困っていた問題だけど、uudeviewとfilenamenormalizerの組み合わせで解決出来そうです。
  • メールの添付ファイル以外でも同党の処理が必要になる場合は多いので、汎用的に利用できるのもありがたい。
  • 最終的にはもっとお手軽に処理できるようにxyzzylispを自作することなのだろうけど、一から勉強してたらいつになる事やら。