===================================== emlファイルの一覧表示、重複チェック等を行うプログラム emlCheck.exe Version 4.7 ===================================== ●概要 【ソフト名】 emlファイルの一覧表示、重複チェック等を行うプログラム 【登 録 名】 emlChkxx.zip 【バイト数】 xxx,xxxバイト 【著作権者】 A.Shimada(島田明雄) 【対応環境】 Windows 98, 2000, XP, Vista, 7 日本語版 【動作確認】 SOTEC WinBook Quattro/X(Windows 98 + Outlook Express)        Endeavor NT7100Pro(Windows XP Pro + Outlook Express)        Endeavor NJ5100Pro(Windows Vista Ultimate + Windowsメール)        Endeavor NJ5100Pro(Windows 7 Home + Windows Liveメール2011) 【必要 DLL】 なし 【開発言語】 Delphi2007 【更 新 日】 2012/3/3 【種 別】 フリーソフトウェア 【サポート】 メールにて 【転載条件】 転載を希望される方は、事前に私宛にメールをください。 ●機能  WindowsメールやOutlook Expressのメールを名前を付けて保存すると'件名.eml'と  いうファイルが作成できます。これはメールのヘッダと本文がベタのテキストに  なったファイルです。同様にニュースのnwsファイルも作成できます。本プログラ  ムは指定したフォルダ内のメッセージ(ここではemlファイル、nwsファイルを総称  してメッセージと呼ぶことにします)の一覧を表示して次のようなことができます。  (1)選択したメッセージをWindowsメール又はOutlook Expressで開く。  (2)選択したメッセージをエディタで開く。  (3)選択したメッセージを削除する。  (4)選択したメッセージの添付ファイルを削除する。  (5)フォルダ内のメッセージを検索する。下位のフォルダ内も可能。複数文字列の   AND/OR検索、除外文字列検索、絞込み検索が可能。  (6)Message-IDが重複したメッセージを一覧/選択状態にする。  (7)メッセージのリストを作成する。  例えばemlファイルでメールを保存している場合に、WindowsメールやOutlook  Expressに戻さなくても検索・表示できます。  本プログラムを作成した動機は(6)です。クライアントの不調で同じメッセージ  を何度も取り込んでしまった場合や誤って不要なコピーを作成してしまった場合  などに重複を削除するのに役立ちます。また、(4)を使えば、既に添付ファイルを  保存済みのメッセージのサイズを減らすことができます。  なお、オプションで差出人、及び宛先のメールアドレスをアドレス帳の表示名に置  き換えて表示できます。  Version4.0でフォルダツリーを常に表示できるようにしました。また、Windows  Vistaに対応しました。差出人、及び宛先のメールアドレスをVistaのアドレス帳の  表示名に置き換えて表示できます。  Version4.5で検索機能とツールバーを追加しました。また、表示項目に宛先と送信  日時を追加しました。また、メッセージの削除キーをDelからCtrl+Delに変更してい  ますのでご注意下さい。  【ご注意】  Windowsメールはemlファイル、及びnwsファイル形式でデータを保存しており、本  プログラムで検索・参照できますが、削除などはしない方がよろしいでしょう。検  証はしていませんけれども管理しているファイルと一致しなくなると不都合が起き  ると思われます。 ●配布ファイル  emlCheck.exe プログラム本体  README.TXT  このファイル ●インストール  ダウンロードしたファイルemlChkvr.zipを解凍し、専用のフォルダを作って  emlCheck.exeを入れて下さい。必ずしも専用フォルダでなくてもかまいません。  なお、起動時に「発行元を確認できませんでした…」というメッセージが出たとき  はemlCheck.exeを右クリックしてプロパティ画面を出し「ブロックの解除」ボタン  を押して下さい。 ●アンインストール  emlCheck.exeと設定ファイルのemlCheck.iniを削除して下さい。レジストリは変更  していません。  Version3.0以降、emlCheck.iniは下記のフォルダ内に移動しました。完全にアン  インストールする場合はemlCheckフォルダごと削除して下さい。  WindowsVistaの場合 :Users\ユーザ名\AppData\Local\SHIMAPEE\emlCheck  Windows2000,XPの場合 :Documents and Settings\ユーザ名\Local Settings\              Application Data\SHIMAPEE\emlCheck  Windows98の場合 :Windows\Local Settings\Application Data\SHIMAPEE\emlCheck ●使用方法  (0)メッセージはWindowsメールやOutlook Expressでメールを選択、あるいは開いて   一つ一つ保存してもよいのですが、メッセージを複数選択してエクスプローラの   適当なフォルダにドラッグ&ドロップすることにより、一気に保存できます。   逆に、エクスプローラ上のメッセージファイルを複数選択してWindowsメールや   Outlook Expressの適当なフォルダにドラッグ&ドロップすることにより、一気に   それらの世界に戻せます。  (1)フォルダツリーから、あるいはメニュー[ファイル]-[フォルダを開く]からメッ   セージファイルを保存したフォルダを選択します。メッセージの一覧が表示され   ます。  (2)メッセージを選択してメニュー[編集]-[メッセージを開く]、[エディタで開く]   [削除]、[添付ファイルの削除]を行ないます。なお[メッセージを開く]、[エディ   タで開く]はメッセージを一つだけ選択して行なって下さい。  (3)フォルダツリーの右クリックから、あるいはメニュー[編集]-[検索]でメッセー   ジを検索できます。検索項目のヒストリ機能があります。また、検索結果から絞   込み検索ができます。   入力フィールドに複数の文字列を並べた場合、AND検索になります。文字列の間に   "OR"を指定するとOR検索になります。文字列の前に"-"を指定すると除外文字列に   なります。引用符で囲むと空白を含められます。   (例)Delphi キャンペーン  両方の文字列を含む    (例)無料 or 無償      無料、又は無償を含む   (例)Works -Workstation   Worksを含むが、Workstationを含まない   (例)"SHIMAPEE's ToyBox"  文字列の間の空白も含む   使用上のヒントと注意事項がありますのでご覧下さい。  (4)メニュー[表示]-[重複メッセージ]で重複したメッセージを表示します。重複し   たメッセージは一つを除き選択した状態となりますので、そのままCtrl+Delキー   を押せば不要なメッセージを削除できます。  (5)メニュー[ツール]-[オプション]で差出人、及び宛先のメールアドレスをアドレ   ス帳の表示名に置き換えて表示する指定ができます。また、メッセージを開くエ   ディタを指定できます。  (6)メニュー[ツール]-[リストの作成]で表示中のメッセージのリストをCSVファイル   に出力します。 ●使用上のヒント  (0)WindowsメールやOutlook Expressからドラッグ&ドロップしてemlファイルを作   成する方法は、複数回に分けた場合に、件名(ファイル名)が重複するとエラー   になります。このためWindows Vistaでは空の作業用のフォルダにドラッグ&ドロ   ップした後、保存用のフォルダに移動するとよいです。エラーになっても「移動   するが両方のファイルを保持する」指定で自動的に順序番号を付けられます。   Outlook Expressの場合はemlファイルを取りだすツールを使用するとよいです。   別掲のOEviewでも重複時に順序番号を付けて取り出しができます。  (1)オプションで差出人、及び宛先のメールアドレスをアドレス帳の表示名に置き   換えて表示できます。  (2)フォルダツリーはメニュー[表示]-[フォルダツリー]で非表示にできます。  (3)メニュー下のフォルダ名をクリックする、あるいはBackSpaceキーを押すことで   もフォルダ選択のダイアログを表示できます。  (4)メッセージを選択して右クリックすることでも操作できます。  (5)メッセージを一つ選択してEnterキーを押すことでもメッセージを開くことがで   きます。  (6)差出人、宛先、件名、フォルダ名は先頭の文字でインクリメンタルサーチ(位置   付けて選択)できます。それらの項目でソートされていない場合は差出人でサー   チします。  (7)起動パラメータとしてフォルダ名を指定すると、フォルダ内に存在するメッセー   ジの一覧を表示して起動します。  (8)検索について   【Windowsメール、及びOutlook ExpressのHTMLメールは正しく検索できますが、    HTMLしかないメールの検索は不完全です。注意事項をご覧下さい。】  ・入力フィールドの指定、日付の範囲の指定、添付ファイル付きの指定が全て一致   するメッセージを検索します。なお、別掲のOEviewと違って本文の検索だけを指   定してもほどんど時間は変わりません。  ・英大文字と小文字は区別しません。なお、1バイトコードと2バイトコードは区別   します。  ・文字列の区切りは、1バイト空白、2バイト空白、又は1バイトカンマです。これら   の文字を含めた文字列を検索したい場合は二重引用符で囲んで下さい。二重引用   符を表現するには2個続けて下さい。  ・文字列と文字列の間に何もない場合は"AND"を仮定します。指定する場合、"and"   "&"、"and" 等を記述できます。"OR"は省略できません。"or"、"|"、"or"   等を記述して下さい。文字列かAND/ORの演算子かの解釈は出現順序によります。   例えば、OR OR AND と指定すると「文字列OR OR 文字列AND」と解釈します。  ・結果の評価は左から右に行っています。括弧で表記すると、   A OR B C は ((A or B) and C) です。A B OR C は ((A and B) or C) です。  ・"-"、又は"−"に続く文字列は除外文字列です。一つでも見つかった場合は   AND/ORにかかわらず検索結果から除外します。  ・除外文字列が見つからないときは条件成立となります。-A or B と指定した場   合、Aが見つからなければBの有無にかかわらずヒットします。  ・空白を含む文字列を除外するには、"-"を付けて二重引用符で囲んで下さい。  ・絞込み検索は検索結果のメッセージを検索します。全て検索し直すより速いかも   しれません。  ・検索結果から、メニュー又は右クリックで選択したメッセージが含まれるフォル   ダを開けます。  (9)ヒント表示が不要な場合はメニュー[ヘルプ]-[ヒントを表示する]でオフ/オン   できます。 ●注意事項  (1) Windowsメールはemlファイル、及びnwsファイル形式でデータを保存しており   本プログラムで検索・参照できますが削除などはしない方がよろしいでしょう。   検証はしていませんけれども管理しているファイルと一致しなくなると不都合が   起きると思われます。  (2)Message-IDのないメッセージ(WindowsメールやOutlook Expressの送信済みア   イテムのメール等)は重複チェックの対象となりません。また、標準では   Message-IDに加え、差出人、件名、送信日時が一致するものを重複と見なします。  (3)添付ファイルの削除は二つ目のboundaryを最終とし、その下をカットすること   により行なっています。あなたの意図した結果になるかどうか、お試しの上ご利   用下さい。  (4)検索について  ・boundaryがネストしている場合、一番内側の最初の部分を検索します。Windows   メール、及びOutlook ExpressのHTMLメールには上記の部分にテキストがあり、   ひな形を使ったHTMLメールも正しく検索できます。ただし、HTMLしか存在しない   メールではHTMLが検索対象になり、このため -HTML 等でHTMLタグ相当を除外す   るとヒットしなくなりますのでご注意下さい。本家Windowsメール、及びOutlook   ExpressもHTMLしか存在しないメールではHTMLが検索対象になるようです。  ・入力フィールドの文法エラーは出さず、なるべく適切に解釈して実行していま   す。例えば"-"のみの指定、右端のAND/OR演算子は無視します。  (5)添付ファイルを削除したファイルの作成日時、アクセス日時、更新日時は、元の   ファイルの更新日時となります。ただしWindows Vistaではおそらくファイルの   プロパティの表示のために更新日時が変わってしまうようです。  (6)差出人、宛先の表示は、なるべくOutlook Expressの表示に合わせましたが、ま   だまだ解釈が不十分だと思います。違っていたらご容赦。  (7)受信日時は最初に見つかったReceivedフィールドの日時です。送信日時はDate   フィールドの日時です。いずれの場合も、見つからないときはファイルの更新   日付です。  (8)メールアドレスの変換でアドレス帳内に重複するメールアドレスがある場合、   文字コードの小さい方の表示名が現れます。  (9)Version3.0でフォルダ選択ダイアログのウィンドウサイズを可変にしました。   なお、Windows98では固定です。また、この影響でWindows2000では新しいフォル   ダの作成ボタンが現れます。  (10)Version4.5で表示項目に宛先と送信日時を追加しました。項目の位置が変って   いますのでご注意下さい。  (11)Version4.5でメッセージの削除キーをDelからCtrl+Delに変更しました。これは   検索画面で入力フィールドの編集でDelキーを使えるようにするためです。 ●プログラムの仕組みなど  (1)アドレス帳(WAB)の入力は、私の技術力では歯が立ちませんでしたのでDelphi   コンポーネントを購入してしまいました。これは安くて簡単です。   http://www.wab-component.com/    Astonsoft Ltd.社 Windows Address Book Processor  (2)Vistaの場合、Users\ユーザ名\Contactsフォルダ内にある全てのcontactファイ   ルのメールアドレスと表示名を参照します。一つの表示名に対し複数のメールア   ドレスが設定されている場合、その全てを参照します。  (3)メッセージヘッダのデコードにIndyを使っています。   Portions of this software are Copyright (c) 1993 - 2003, Chad Z.   Hower (Kudzu) and the Indy Pit Crew - http://www.IndyProject.org/   THIS SOFTWARE IS PROVIDED BY Chad Z. Hower (Kudzu) and the Indy Pit Crew   "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A   PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  (4)Version3.0でフォルダ選択ダイアログをBIF_NEWDIALOGSTYLE及び   BIF_NONEWFOLDERBUTTONで表示するようにしましたが、Windows2000では   NEWFOLDERBUTTONが現れます。  (5)フォルダツリーの表示にはDelphi ShellTreeViewを使用し、右クリックのメニ   ュー表示に手を加えています。フォルダを右クリックした場合、一番上にメッ   セージ検索を強調表示で追加しています。  (6)検索機能はOEviewのものをそのまま使い、あっさりと実現できました。  (7)Version4.5で一覧表示の方法を仮想リストビューに変更しています。すなわち   データをList構造に保存しておき、要求があった時にListViewに書き込んでいま   す。emlCheckではファイルに関する様々な情報を内部的に保存するのに使ってい   ます。改造は大変でしたがこれは便利。例えばVersion4.1ではMessage-IDなどを   リストビューに保存してカラムの幅をゼロにして隠していたのですが(カッコ悪   い)、Version4.5ではメモリ上のList構造に保存しています(カッコいい)。   また、これを利用して、項目の表示、非表示、移動などを柔軟に行えると思いま   すけれどもインタフェースの模索に更に時間がかかりそうなので現機能のまま公   開することにしました。今後、項目の表示、非表示のパターンをいくつか登録し、   フォルダ毎に自動あるいは手動で選択できる機能を考えています。 ●サポート  プログラムの最新版は本ドキュメント末尾のURL内にあります。  不具合等については本ドキュメント末尾の宛先にメール頂ければできるだけ対処  します。 ●免責  本プログラムの使用により生じた損害に関して作者に責任はないものとします。 ●転載  本プログラムの転載等は自由ですがメールにて連絡をお願い致します。 ●謝辞  JIS変換について、@nifty FDELPHI MES15 #286の瑠瓏さんのコード、MES16 #959  のけんしさんのコードを参考にさせて頂きました。  BASE64変換について、@nifty FDELPHI MES16 #1326の河邦 正さんのコードを参考  にさせて頂きました。  おかの☆まりもさんのWWWページでRFCについて勉強させて頂きました。  http://www.akanko.net/marimo/rfc/index.html  HATさんのWWWページでメールの文字化けについて勉強させて頂きました。  http://www003.upp.so-net.ne.jp/hat/imail/cover.html  565さんに検索機能の要望を頂きました。  千田さんにWindows98でタスクバーにゴミが出る不具合の指摘を頂きました。  千田さんに受信日時が変換できないことがある不具合の指摘を頂きました。  皆様ありがとうございます。 ●改訂歴  emlCheck.exeのバージョン番号はWindowsのプロパティで確認できます。  Version 4.7(2012/3/3)   受信日時が変換できないことがある不具合を修正しました。  Version 4.6(2012/2/19)   Windows98でタスクバーにゴミが出る不具合を修正しました。  Version 4.5(2008/5/9)   フォルダツリーの右クリック処理を更に変更しました。検索機能とツールバーを   追加しました。また、表示項目に宛先と送信日時を追加しました。  Version 4.1(2008/3/9)   フォルダツリーの右クリック処理を変更しました。など。  Version 4.0(2008/3/6)   フォルダツリーを常に表示できるようにしました。また、Windows Vistaに対応   しました。送信者のメールアドレスをVistaのアドレス帳の表示名に置き換えて   表示できます。など。  Version 3.0(2007/4/14)   Windowsの複数ユーザに対応しました。ファイル名でなくSubjectを表示するよう   にしました。ファイル日時でなくReceived、又はdateの日時を表示するようにし   ました。アドレス帳読み込み時の進捗を表示するようにしました。など。  Version 2.7(2007/2/2)   重複チェックのアルゴリズムを変更しました。  Version 2.6(2006/10/22)   アイコンを作成しました。これだけです。(^^;  Version 2.5(2006/9/30)   メッセージの重複チェック時、Message-IDに加え、送信者、件名、送信日時の   一致を確認するようにしました。  Version 2.0(2006/6/25)   メールアドレスの表示名変換オプションをサポートしました。  Version 1.1(2006/3/14)   ファイル名に空白が含まれているとエディタで開けない不良を修正しました。  Version 1.0(2004/2/28)   起動時のパラメータ及び添付ファイル削除時の進捗表示をサポートしました。  Version 0.9(2003/1/20)   ショートカットキーを変更しました。  Version 0.8(2003/1/15)   プログラム公開。  Version 0.5(2003/1/4)   作成。 ===================================== Copyright(C)2003,2012 A.Shimada(島田明雄) URL http://www.mars.dti.ne.jp/~a-smd/ E-Mail akio_dot_shimada@nifty.ne.jp(spam対策) SHIMAPEE(しまぴー) =====================================