以前、Outlook 2010/2007/2003 でメールを送信すると添付ファイルが消えたり、WINMAIL.DAT というファイルになる問題というタイトルで公開していた現象について Outlook 2016 以降に対応したものを再度掲載します。
Outlook でメールを送信した場合によく発生するトラブルとして以下のようなものがあります。
- Outlook 以外で受信すると添付ファイルがなくなる。
- 添付ファイルをつけていないのに、WINMAIL.DAT というファイルがつく。
- 添付ファイルが WINMAIL.DAT というファイルに置き換わってしまい開けない。
これらはすべて Outlook が Transport Neutral Encapsulation Format (以下、TNEF) というフォーマットによりメールを送信することで発生しています。
この記事では、TNEF の概要と使われる条件、回避策について記述しています。
TNEF の概要
TNEF とはメールの送受信に使われるプロトコルに依存せず (Transport Neutral) に、Outlook の処理に必要なデータをカプセル化 (Encapsulation) して送信する形式 (Format) のことであり、カプセル化されたデータは WINMAIL.DAT というファイル名で添付されます。受信側が Outlook (Outlook Express ではなく Office シリーズの Outlook) や Exchange Server を使用していた場合、この WINMAIL.DAT をデコードすることで、Outlook 固有のさまざまな機能やプロパティを正しく送信することが可能になります。
しかし、添付ファイルのデータも WINMAIL.DAT にカプセル化されてしまうため、TNEF を認識できないメールソフトで受信した場合には添付ファイルが WINMAIL.DAT に置き換わったように見えます。
また、一部のメール プログラムは WINMAIL.DAT を解読できないことがわかっているため、その添付ファイルを無かったものとしてしまい、添付ファイルを表すマークすら表示しません。
そのため、「添付ファイルが削除された」と勘違いされる方もいますが、実際には添付ファイル自体は削除されず残っているので、スクリプトを使えば添付ファイルを取り出すことが可能です。
なお、この現象は Outlook の不具合と受け止められることが多いのですが、基本的には Outlook 固有の機能を使った場合にデータの損失を防ぐための仕様になります。
TNEF が使われる条件
では、どのような場合に TNEF になってしまうのでしょうか?
TNEF は以下のような場合に使用されます。
- Outlook のリッチテキスト形式をメールを作成した場合
インターネットで一般的に使用されている本文のフォーマットはテキスト形式または HTML 形式であるため、Outlook のリッチテキスト形式で作成されたメールは TNEF で送信するか、HTML 形式などに変換する必要があります。
既定では自動的に HTML 形式に変換されるのですが、HTML 形式に変換できないデータが含まれている場合には TNEF で送信されます。たとえば、ページの色や Excel の埋め込みオブジェクトなどが変換できないデータになります。
- あて先や Cc などに指定した受信者のアドレスのプロパティで [インターネット メール形式] が [Outlook リッチ テキスト形式で送信] になっている場合
メールの形式をテキストや HTML にしたとしても、アドレスのプロパティで [Outlook リッチ テキスト形式で送信] が選択されている場合、その受信者には TNEF で送信されます。この場合、受信者が Outlook を使っていると送信者が作成した形式で表示されます。たとえば、HTML 形式のメールをこのオプションで送信した場合、受信者が Outlook を使っていれば HTML 形式で表示され、Outlook 以外であればテキスト形式で表示されます。
既定では [インターネット メール形式] は [最適な送信形式を自動的に選択する] になっているはずですが、TNEF で送信されたメールに返信したり、Exchange 環境で Exchange のアドレス帳からあて先を選択した場合に、リッチテキスト形式で送信するような設定となっている場合があります。
- メールに特殊なプロパティが設定されていた場合
メール フォームをカスタマイズしていたり、OFT や MSG として保存したメールをテンプレートとしてメールを作成したような場合に、通常設定されないプロパティが設定されることがあり、このような場合も TNEF が使われます。たとえば、投票ボタンを設定すると TNEF で送信されます。
なお、アドインなどにより意図せずプロパティが設定されることもあり、そのようなプロパティが設定されているかどうかを確認することは困難です。
注意しなければならないのは、2. や 3. の条件に合致するとメールの形式をリッチテキスト形式以外にしても TNEF 形式になることがあるという点です。
TNEF が送信される現象の回避策
回避策はメール アカウントとしてインターネット アカウントを使用している場合と、Exchange サーバーを使用している場合で異なります。
POP/IMAP のようなインターネット アカウントを使用している場合
インターネットのアカウントを使用している場合は、以下のようなレジストリを設定することで、どのような場合でも TNEF を使用しないよう強制することができます。
レジストリ キー: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences
データの名前: DisableTNEF
データの種類: DWORD
データの値: 1
レジストリ操作が不安だという方は、上記の設定を行うスクリプトを作成しましたので、下記のリンクをクリックして VBS ファイルをダウンロードし、こちらを実行してください。
DisableTNEF2016.vbs
Exchange サーバーを使用している場合
Exchange サーバーではサーバー側の設定により TNEF での送信を完全に禁止することができます。設定はリモート ドメイン単位で行えるため、Exchange サーバーを使用している組織には TNEF での送信を許可し、それ以外には TNEF での送信を禁止するということも可能です。
リモート ドメインでの TNEF 設定の詳細については、以下の URL を参照してください。
Set-RemoteDomain (ExchangePowerShell) | Microsoft Docs
回避策による副作用
上記の設定を行って TNEF での送信を無効にすると、以下のような制限事項が発生しますので、ご注意ください。
- 投票ボタンの機能が使用できない。
- 仕事の依頼ができない。
- Outlook 2002 以前の Outlook に会議出席依頼を送信しても、テキスト形式の通常のメッセージになる。
- カスタムフォームが送信できない。
- Excel ワークシートの一部などを OLE オブジェクトとして埋め込んで送信することができない。
参考情報
Outlook 2007 および 2010 でメールを送信すると、受信者側に Winmail.dat というファイルが添付される (microsoft.com)
メールのメッセージ形式が Outlook のインターネット メールのメッセージに与える影響 (microsoft.com)