Windows 7 の中の Windows メール

Windows 7 には Outlook Express や Windows メールのようなメール クライアントが含まれていないことになっていますが、実際には C:\Program Files\Windows Mail というフォルダーが存在しており、その中には Windows メールの実行ファイルである WinMail.exe があります。(システム属性が付与されているので、既定では表示されません。)
ただし、WinMail.exe を実行しても、通常は何も起こりません。

では、いったいなぜこのファイルが存在するのでしょうか?

このファイルの存在理由はただ一つ。それは「Outlook Express や Windows メールのデータを他のアプリケーションに引き継ぐ」というものです。
例えば、Outlook が Outlook Express などのデータをインポートする際、DBX ファイルや EML ファイルを直接開くわけではなく、Windows メールの API を使用します。つまり、Windows 7 に Windows メールが存在しないと、古い PC から転送ツールでコピーしてきたメールデータを引き継ぐことができないということになってしまいます。
そのため、インポート処理をする部分だけをのこした Windows メールが存在し、間違って起動されて何も起こらずユーザーが混乱してしまうということを防ぐためにシステム属性を付与して隠していると考えられます。

これでは単なる無駄知識になってしまうので、ちょっとした Tips を。
Windows XP から Windows 転送ツールでコピーした Outlook Express のデータを Outlook でインポートする際、データのサイズがおよそ 1G を超えるぐらいになると、インポート処理の途中で突然フォルダー選択のダイアログが表示されて失敗することがあります。
これは、Windows メール自体の Outlook Express からのインポート処理に時間がかかりすぎると、Outlook でタイムアウトが発生してしまうためです。
このような場合、ファイル名を指定して実行で下記のコマンドを実行します。

    c:\Program Files\Windows Mail\WinMail.exe

こうすると、Windows XP から転送した Outlook Express のデータがある場合には Windows メール セットアップというダイアログが表示され、Windows メールのインポート処理が実行されます。そして、このダイアログの表示が終わった後で Outlook でインポートすると、フォルダーの選択が表示されずにインポートができるというわけです。
Outlook でのインポートがうまくいかないという方は試してみてください。

[mailto リンクで UTF-8 を使う] と Outlook

Internet Explorer 7.0 以降には [mailto リンクで UTF-8 を使う] というオプションがあります。
この設定とメールクライアント、および mailto リンクの指定方法の組み合わせによっては、件名や本文で文字化けが発生します。
以下では IE7 の挙動がどのように変わるかと、その結果 Outlook をはじめとするマイクロソフトのメール クライアントでどのような動作が行われるかについてまとめました。

Internet Explorer 6.0 以前について

HTML 中に mailto が出現する場合、FORM で指定する場合と HREF で指定する場合があり、HREF で指定する場合はさらに全角文字を事前にエンコードする場合とそうでない場合があります。それぞれについての動作は以下の通りです。

1. フォームの ACTION を mailto: とし、Subject および Body をフォームのパラメータとして送信した場合

Subject や Body の DBCS は、HTML で指定されている文字コードで % エンコードされ、ShellExecuteA によりメールソフトに渡されます。
例えば、Shift-JIS で記述されたページのフォームで Subject を「日本語件名」、Body を「日本語本文」とすると、下記の文字列がメールソフトに渡されます。

  mailto:test@example.com?subject=%93%FA%96%7B%8C%EA%8C%8F%96%BC&body=%93%FA%96%7B%8C%EA%96%7B%95%B6

一方 UTF-8 で記述されたページのフォームで同様のパラメータを指定すると、下記の文字列がメールソフトに渡されます。

  mailto:test@example.com?subject=%E6%97%A5%E6%9C%AC%E8%AA%9E%E4%BB%B6%E5%90%8D&body=%E6%97%A5%E6%9C%AC%E8%AA%9E%E6%9C%AC%E6%96%87

2. HTML 中の HREF タグで mailto のリンクの Subject および Body の全角文字があらかじめ % エンコードされている場合

HTML で指定されている文字コードに関わらず、指定された文字列がそのままメールソフトに渡されます。
例えば、下記の文字列は全角文字を Shift-JIS のコードにより % エンコードしたものですが、UTF-8 が指定されている HTML にこのようなリンクがあっても、この文字列のままメールソフトに渡されます。

  mailto:test@example.com?subject=%93%FA%96%7B%8C%EA%8C%8F%96%BC&body=%93%FA%96%7B%8C%EA%96%7B%95%B6

3. HTML 中の HREF タグで mailto のリンクの Subject および Body に全角文字を指定した場合

HTML で指定されている文字コードのまま、ShellExecutteA によりメールソフトに渡されます。
例えば、Shift-JIS で記述されたページの mailto リンクで Subject を「日本語件名」、Body を「日本語本文」とすると、下記の文字列が Shift-JIS の文字列としてメール ソフトに渡されます。

  mailto:test@example.com?subject=日本語件名&body=日本語本文

一方、UTF-8 で記述されたページの mailto リンクで同様の文字列を指定した場合、上記の文字列がエンコードされず、UTF-8 のバイト文字列としてメールソフトに渡されます。

Internet Explorer 7.0 以降について

Internet Explorer 7.0 以降では [mailto リンクで UTF-8 を使う] の設定がありますが、これをオフにした場合は Internet Explorer 6.0 以前と同様の動作となります。
また、オンにした場合でも、上記の 1. および 2. の動作は変わりません。
そして、3. の HREF タグの mailto の Subject および Body に全角文字を指定した場合に、以下のような動作をします。

  1. 文字列を HTML で指定された文字コード (または自動認識されたページの文字コード) により Unicode に変換します。
  2. Unicode 文字列を UTF-8 とし、% エンコードを行います。

そのため、 Subject を「日本語件名」、Body を「日本語本文」とすると、HTML の文字コード指定に関わらず、下記の文字列がメールソフトに渡されます。

  mailto:test@example.com?subject=%E6%97%A5%E6%9C%AC%E8%AA%9E%E4%BB%B6%E5%90%8D&body=%E6%97%A5%E6%9C%AC%E8%AA%9E%E6%9C%AC%E6%96%87

Outlook 2010/2007 について

Outlook 2010/2007 は Internet Explorer の [mailto リンクで UTF-8 を使う] の設定により動作が変わります。Outlook 2010/2007 にも [ツール]-[オプション]-[メール形式]-[文字設定オプション] に [mailto: プロトコルで UTF-8 をサポートする] がありますが、どちらのオプションも設定されるレジストリは同じ HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Protocols\Mailto\UTF8Encoding になります。そのため、このオプションをオンにすると自動的に Internet Explorer の [mailto リンクで UTF-8 を使う] がオンになります。
[mailto リンクで UTF-8 を使う] がオンである場合、mailto のリンクは Internet Explorer で UTF-8 による % エンコードが行われていると仮定します。
そのため、指定された mailto の文字列については、% エンコードをデコードし、UTF-8 の文字列として取得します。
その結果、ShellExecute やショートカットを使い、Internet Explorer を経由せずに Subject や Body に Shift-JIS の全角文字を指定した場合、文字化けが発生します。
一方、[mailto リンクで UTF-8 を使う] がオフである場合、mailto のリンクは Windows の既定のコードページによりエンコードされていると仮定します。
そのため、指定された mailto の文字列については、% エンコードをデコードし、日本語環境では Shift-JIS の文字列として取得します。

Windows メールについて

Windows メールでは Internet Explorer の [mailto リンクで UTF-8 を使う] の設定によって動作が変わることはありません。
mailto リンクで指定された文字列をデコードした後、パラメータごとに処理します。
そして、件名については UTF-8 が使用されている場合でも正しく識別できますが、本文については文字化けが発生します。

Outlook 2003 以前、および Outlook Express について

Outlook 2003 以前、および Outlook Express が開発された際には、[mailto リンクで UTF-8 を使う] というオプションは存在していません。したがって、mailto に指定された文字列については、常に Shift-JIS として解釈されます。
その結果、以下の状況では文字化けが発生します。
1. UTF-8 で指定されたページにおいて、フォームにより全角文字が送信される場合
2. [mailto リンクで UTF-8 を使う] がオンにされた状態で、HTML の HREF で mailto に全角文字が指定された場合

まとめ

上記の動作をすべてまとめると以下のようになります。

Internet Explorer 6 以前、または [mailto リンクで UTF-8 を使う] がオフである場合

・フォームによる送信

コードページ
Oultook 2010/2007
Windows メール
Outlook 2003 以前および
Outlook Express
UTF-8
NG
NG (件名は OK)
NG
Shift-JIS
OK
OK
OK

・全角文字の mailto

コードページ
Oultook 2010/2007
Windows メール
Outlook 2003 以前および
Outlook Express
UTF-8
NG
NG (件名は OK)
NG
Shift-JIS
OK
OK
OK

※ UTF-8 の文字がエンコードされずに指定された場合、UTF-8 の 3 バイト目の文字が DBCS の 1 バイト目と解釈され、パラメータの連結を意味する & が正しく識別できなくなることがあります。そのような場合には、順序によって本文または件名が空白となります。

・ShellExecute 直接指定

すべてのクライアントで OK
※ ファイル名を指定して実行やショートカットなどで mailto リンクに全角文字を指定した場合も ShellExecute 直接指定と同様です。

[mailto リンクで UTF-8 を使う] がオンである場合

・フォームによる送信

コードページ
Oultook 2010/2007
Windows メール
Outlook 2003 以前および
Outlook Express
UTF-8
OK
NG (件名は OK)
NG
Shift-JIS
NG
OK
OK

・全角文字の mailto

コードページ
Oultook 2010/2007
Windows メール
Outlook 2003 以前および
Outlook Express
UTF-8
OK
NG (件名は OK)
NG
Shift-JIS
OK
NG
NG

・ShellExecute 直接指定

Outlook 2010/2007 は NG、他は OK

Windows XP の Outlook Express 6.0 のメールデータを Windows 7 の Outlook 2007 に移行する方法

メッセージで以下のようなご質問をいただきました。


Windows XP で Outlook Express を使っています。新しく Windows 7 のパソコンを買ったのでメールデータをコピーしたいのですが、Windows 7 に Outlook Express がありません。Outlook 2007 は入っているのですが、Windows XP の Outlook Express から Windows 7 の Outlook 2007 にデータをコピーできるのでしょうか?


Windows XP の Outlook Express から Windows 7 の Outlook 2007 にデータをコピーすることは可能です。一番手っ取り早いのは Windows 7 の「Windows 転送ツール」を使用することでしょう。Windows 転送ツールを使用すると、ユーザーの設定やデータ ファイルなどを Windows XP のパソコンから Windows 7 のパソコンにコピーすることができ、コピーされるデータの中には Outlook Express の設定やメッセージデータなども含まれています。そして、設定やデータを転送した後に Windows 7 上で Outlook 2007 を起動し、[ファイル]-[インポートとエクスポート] で [他のプログラムまたはファイルからのインポート] により [Outlook Express 4.x、5.x、6.x、または Windows Mail] を選択してインポートすることで、Outlook 2007 に Outlook Express のメールが転送できます。Windows 7 には Outlook Express も Windows Mail も入っていないはずなのですが、Program Files に Windows Mail というフォルダが存在し、Outlook 2007 でインポートするために必要なファイルがここに含まれているので、インポートだけはできるようです。

ポイントとなるのは、設定とメールデータを一緒に転送しているということです。Outlook 2007 のインポート機能では、Outlook Express のデータが保存されている場所を指定することができず、Windows に設定されている Outlook Express のデータ保存場所からインポートを行います。そのため、データだけをコピーしても、Outlook 2007 からではデータをインポートすることができません。Windows 転送ツールにより設定とデータを整合性を保って転送することにより、Outlook 2007 からのインポートが可能となるのです。

したがって、すでに Windows XP は破棄してしまっていて Outlook Express のデータだけが残っているという場合、上記の方法は使用できません。この場合には Windows 7 のパソコンに Windows Live メールをインストールする必要があります。そして、Windows Live メールにより Outlook Express のメールデータをインポートし、[Microsoft Exchange] にエクスポートすることで Outlook 2007 にメールデータを移行できます。なお、Windows Live メールでインポートを行うと、メールが [保存フォルダー]-[インポートされたフォルダー] の下にインポートされるのですが、このフォルダは Outlook 2007 でインポートする際にインポートの対象とならないため、Windows Live からエクスポートする必要があります。

Windows 7 の Windows 転送ツールの使い方や注意点などの詳細については、以下の Web ページをご覧ください。

Windows 7 アップグレード徹底ガイド
Windows 7 でメールを快適に使おう

Outlook Hotmail Connect 14.0 のベータがリリース

Outlook Connector の新しいバージョンである Outlook Hotmail Connector のバージョン 14.0 のベータ版がリリースされました。

Outlook 2010 用に開発されたものですが、Outlook 2007 や Outlook 2003 でも使用できます。追加された機能としては、迷惑メールフィルタのリストの共有や Outlook の受信トレイへの自動仕分けルールの適用などがあります。また、ちょっと使ってみたところ、連絡先の名前が常に「名姓」の順番になってしまうという不具合が解消されているようです。

ダウンロードは以下の URL からできます。

http://www.microsoft.com/downloads/details.aspx?FamilyID=3d003da0-f684-4f4d-a9c8-8d15b84f60d1&DisplayLang=ja

また、詳細については、以下のブログ記事も参考にしてください。(英語です)

http://beta.blogs.msdn.com/outlook/archive/2009/12/04/announcing-the-outlook-hotmail-connector-beta.aspx

Windows Mail のアドレス帳でグループが作れない場合の対処方法

Windows Mail のアドレス帳は Outlook Express のアドレス帳とは異なり、Windows のエクスプローラの拡張機能として実装されています。
そして、アドレス帳といっても実際にはハードディスク上のフォルダのうちの一つであり、連絡先や連絡先グループはそれぞれ単独のファイルとして保存されています。
本来なら、フォルダのカスタマイズ設定で [アドレス帳] フォルダはアドレス帳固有の機能が使えるフォルダとなっているはずなのですが、何らかの理由でこの設定が解除されてしまうと、普通のフォルダと同じように表示され、アドレス帳固有の機能である [新しい連絡先グループ] などが使えなくなってしまいます。
そのような場合、以下の手順でアドレス帳固有の機能が使えるようになります。

  1. アドレス帳を開きます。(実際には通常のフォルダが開かれたような状態になります。)
  2. フォルダ内の何もないところを右クリックし、[このフォルダをカスタマイズする] をクリックします。
  3. [カスタマイズ] タブの [次のフォルダの種類をテンプレートとして使用する] の下のドロップダウンで [連絡先] を選択します。
  4. [OK] をクリックします。