winmail.dat。このファイル形式に困惑したことはないだろうか? きっとこのページに辿り着いたあなたは、Pythonユーザーなのだろう。私たちPythonユーザーはもうwinmail.datに悩まされることはない。
winmail.datとは?
winmail.datは、Microsoft社のOutlookというメールソフトでメール送信した場合に添付されることがある、Microsoft社独自のTNEFというファイル形式だ。メールの受け手がOutlookを使用していない場合、このwinmail.datという添付ファイルが送られてくることがある。その際、メール本文は問題なく読めるが、添付ファイルがある場合に添付ファイルがwinmail.dat内に閉じ込められてしまう。そのため、メールの再送を依頼した人は多いのではないだろうか?
Pythonならwinmail.dat内の添付ファイルを抽出できる
Pythonにはwinmail.dat内の添付ファイルを抽出できるライブラリがある。それが、「tnefparse」だ。まずはtnefparseをインストールしよう。通常通り以下コマンドで実行できる。
pip install tnefparse
tnefparseライブラリによる、winmail.dat内添付ファイル取り出しの実践
最も簡単な方法は、コマンドプロンプト(筆者の環境ではAnacondaPrompt)で下記を実行する。前提として、カレントディレクトリに「winmail.dat」というファイルが置かれているとする。
なんと、コードはたった1行だ。
tnefparse -a winmail.dat
成功すると、「Successfully wrote 2 files」などのように表示され、カレントディレクトリにファイルが出力されているはずだ。winmail.datが添付ファイルとして送られてきても、実際には添付ファイルがないケースも多く、その場合は「Successfully wrote 0 files」と表示される。「-a」のaはAttachment(添付)の頭文字でありaをoにするとOverview(概要)が表示されるので興味のある人は試してほしい。他にどのような引数があるかはドキュメントを確認してほしい。
以上、Pythonでwinmail.dat問題を解決する方法を提示した。この記事が少しでもあなたの役に立つことを願っている。