検索ダイアログボックス(秀丸メール本体側)(Ver7.30対応版)
条件1〜条件4、AND/OR
 複数の条件を指定してメールを検索したいときに、条件1〜条件4のタブを切り換えて、検索条件を入力してください。最大4つまで、条件が入力できます。
 それら複数の条件すべてを満たしたメールのみを検索したい場合は「AND」をONにし、どれか1つの条件に当てはまればよい場合には「OR」をONにしてください。

 条件1〜条件4は、Ctrl+TabキーまたはCtrl+Shift+Tabキーによって切り換えることができます。


検索
 検索したい文字列をここに指定します。正規表現またはあいまい検索がONの場合は正規表現のパターンに従った文字列をここに入力します。

 Alt+↓キーを押すと、検索の履歴が表示されます。

 検索コマンドに割り当てられたキー(Ctrl+Fキー等)を押すと、現在のメール内容枠の文字カーソルの位置の文字をここに取り込むことができます。連続してキーを押せば、その分だけ広い範囲の文字を取り込みます。

 検索文字列の欄の右側にある「▼」を押して出てくるリストの一番下に、「アドレス帳から選択...」があります。それを選択すると、アドレス帳からメールアドレスやグループを拾ってくることが出来ます。アドレス帳のグループを対象とした検索については「対象」の所が「(メールアドレス検索)」になってないとダメで、他の部分を対象とした検索の時にはアドレス帳・グループを対象とした検索はうまく動作しません。その点ご注意ください。

検索文字列の警告表示について


対象
 各メールの中での検索対象の部分を指定します。
 「From/To列表示用のキャッシュ」というのは、メール一覧のFrom/To列を描画する用にメモリ上に保持している文字列のことで、ここには、From/To列に表示する用に、例えば受信系メールであれば、From:ヘッダ中の名前+メールアドレスの文字列が入っています。送信系メールの場合は一番最初の宛先の名前+メールアドレスがはいっています。
 「件名+From/To列表示用のキャッシュ」は、「From/To列表示用のキャッシュ」にさらにSubject:ヘッダ内容を対象に加えた物です。高速に検索します。

 「特定のヘッダ内...」を選択すると、その下に「特定のヘッダ」って欄が出てきて、そこで検索対象のヘッダが指定できます。ここには4つまでのヘッダを「/」で区切って指定することが出来ます(Version 6.50β2より)。例えばFrom:ヘッダ、To:ヘッダ、Cc:ヘッダ、Bcc:ヘッダの4つを検索対象にしたい場合は、「From:/To:/Cc:/Bcc:」のように指定してください。
 特定ヘッダの名前の先頭に「@」を付けると、指定されたヘッダの中身をコンマ区切りメールアドレスのみ文字列に変換した内容に対して検索が実行されます。たとえば「@To:/Cc:」と指定すると、To:およびCc:ヘッダの中身のメールアドレスのみに対して検索が実行されます。「@」は一番先頭にのみ指定可能で、指定すると、複数指定されたヘッダすべてがメールアドレスのみに変換されます。(Version 6.87β6から)
対象ヘッダの例:
X-Attach: 添付ファイル・ファイル名からの検索
X-TuruKame-Filter: 迷惑メールフィルターの振り分け結果
From: 差出人
@From: 差出人のメールアドレス
To:/Cc:/Bcc: 宛先
@To:/Cc:/Bcc: 宛先のメールアドレスのみの文字列
 「特定ヘッダの結合文字列」は、「特定のヘッダ内」と似てますが、検索の仕組みが違ってて、たとえば「From:ヘッダは何々でTo:ヘッダは何々である」みたいな複数のヘッダについての複合的な条件でメールを探すことが出来ます。
 たとえば特定ヘッダとして"From:/To:"を指定した場合、対象のメールのFrom:が"a"でTo:が"b"のようになってたとすると、"from:a\nto:b\n"のような文字列が生成されて、それに対して検索が実行されます。
 対象ヘッダが複数あった場合は、その複数の内容をコンマ区切りにした1つのヘッダに変換されます。たとえば
To: aaa
To: bbb
 のようなメールがあった場合、To:ヘッダは「to:aaa,bbb」のような文字列に変換されます。
 指定されたヘッダ自体が存在しない場合は空のヘッダがあるのと同じ扱いになります。たとえばCc:ヘッダが存在しないメールでも、対象ヘッダにCc:を指定した場合は、"cc:\n"の文字列が生成されて、それに対して検索が実行されます。
検索文字列の例:
検索したい目的 特定ヘッダの指定 検索文字列(正規表現)
From:が「hoge1@hoge.com」で、かつ、To:に「hoge2@hoge.com」を含むメールを探す例 @From:/To: ^from:hoge1@hoge\.com\nto:(|.*,)hoge2@hoge\.com(,|\n)
From:とTo:がまったく同一のメールを探す例 From:/To: from:(.+)\nto:\1\n
From:に含まれるメールアドレスがCc:にも入ってるメールを探す例 @From:/Cc: from:(.+)\ncc:(|.*,)\1(,|\n)
From:に含まれるメールアドレスがTo:またはCc:に入ってるメールを探す例 @From:/To:/Cc: from:(.+)\n((to:(|.*,)\1(,|\n))|.*\ncc:(|.*,)\1(,|\n))
a@hoge.jpさんからb@hoge.jpさんへのメールか、またはb@hoge.jpさんからa@hoge.jpさんへのメール @From:/To (from:a@hoge\.jp\nto:(|.*,)b@hoge\.jp)|(from:b@hoge\.jp\nto:(|.*,)a@hoge\.jp)
 特定ヘッダとして、例外的に、「body」を指定すると、ヘッダじゃなくてメール本文を対象にすることが出来ます。たとえば「From:/body」と指定すると、from:ヘッダがあって、改行(\n)があって、その後ろにメール本文がある文字列が検索対象文字列になります。
 ここの「特定ヘッダの結合文字列」での検索では、正規表現パターンの「^」は対象文字列の先頭にのみヒットし、対象文字列途中にある改行文字の次の位置にはヒットしません。

 X-Attach:ヘッダを対象に指定した場合で、添付ファイル・ファイル名に外国語が使われてる場合、X-Attach:ヘッダ中の外国語にうまくヒットするように、秀丸メール内部でややこしい変換がされます。普通に文字列検索する場合はそれでヒットしますが、「^」や「$」を使った正規表現パターンがうまくヒットしないことがあります。その辺ご注意ください。


 「発信元の国識別」を指定すると、メールの発信元の国識別を調べて、その結果文字列に対して検索が実行されます。国識別は、例えば日本なら"JP"、アメリカなら"US"のような2文字の英字です。発信元の国が特定出来なかった場合は"??"、発信元の特定でエラーになった場合(主にReceived:ヘッダが無い場合)は空の文字列になります。
 「発信元の国識別」を指定すると、メールの発信元の国識別を調べて、その結果文字列に対して検索が実行されます。国識別は、例えば日本なら"JP"、アメリカなら"US"のような2文字の英字です。発信元の国が特定出来なかった場合は"??"、発信元の特定でエラーになった場合(主にReceived:ヘッダが無い場合)は空の文字列になります。
 「メールアドレス検索」、「Message-Id検索」については一部制限があります。詳しくは以下を参照ください。
 メールアドレス検索ダイアログボックス
 Message-Id検索ダイアログボックス

 「本文(「^」は本文の先頭にのみヒット)」は、メール本文を対象とするのですが、正規表現で「^」を指定した場合に、その「^」がメール本文の先頭にのみヒットします。例えば「^あいう」と指定すると、メール本文の先頭が"あいう"で始まるメールにのみヒットします。例えば「(?#maxlines:5)^(.*\n){0,4}.*名前」のような検索をすると、メール本文の1行目から5行目までに"名前"って文字列があるメールにのみヒットします。


大文字/小文字の区別
 検索文字列の大文字/小文字を区別するかどうか指定します。例えば大文字小文字を区別しないモードの場合、「abc」で検索すると、「abc」、「ABC」、「Abc」など、大文字小文字に関係なく文字列を検索することができます。
 正規表現DLLにHmJre.dllを指定している場合で、あいまい検索をONにしている場合、全角英字についても大文字/小文字を区別しないで検索します。そうでない場合は半角文字についてのみ大文字/小文字を区別しないで検索します。


単語の検索
 単語を検索するかどうか指定します。「単語の検索」を指定した場合、例えば「abc」を検索すると、「abcdefg」という文字列中のabcにはヒットしません。
 秀丸エディタ側の「動作環境・編集・高度な編集」での「単語の検索で"abc"を検索する時、"abc123"にはヒットさせない」がONかどうかも関係します。または、将来の秀丸エディタで単語検索についての設定が拡張されたり仕様変更される可能性がありますが、 それについては秀丸エディタ側のヘルプなどを参照ください。


正規表現、あいまい検索
 正規表現とは、特別な文法によって検索対象の文字列を指定する方法で、これを使うと複雑な条件の文字列を簡単に検索することができます。

 正規表現について


改行/空白を無視
 メール本文中にある改行文字、空白(半角、全角両方)、タブ文字を除去して検索します。例えば「携帯電話」という文字列をメール本文から検索するときに、「携帯」と「電話」の間で改行されていた場合でもきちんと検索できます。
 ここのオプションがOFFであっても、正規表現DLLにHmJre.dllを使っていれば、そちらの「あいまい検索」のオプションによって、同様の条件を指定できます。


見つからなかった方を対象とする
 検索でヒットしたメールでなく、ヒットしなかった方を対象とします。例えば、メーリングリスト中に混じってしまった他のメールを探したい時に、「メーリングリストの名前を件名部分に含まない」メールを検索するといった使い方ができます。


検索範囲
 検索する範囲を指定します。「メール内」は現在選択しているメールの中だけ、「一覧内」は現在のメール一覧で表示している範囲内、「アカウント内」は現在アカウント内、「全アカウント」はすべてのアカウントを検索します。
 「アカウントグループ内」は、今現在選択しているアカウントが属しているアカウントグループ内のみを対象としますが、もし、今現在選択してるアカウントがどのアカウントグループにも属してない場合には、「どのアカウントグループにも属してない」という範囲内、 つまり、何かのアカウントグループにぶつかるまでを範囲とします。

注意:
 「アカウント内」または「全アカウント」とした場合でも、現在のフォルダ中のメールについては、現在一覧に表示している分しか対象としません。なので、例えば表示範囲を「最近の分」した状態で「全アカウント」を検索範囲としても、 現在のフォルダの古いメールは検索対象となりません。
 「アカウント内」または「全アカウント」を指定した場合でも、送信ログおよび受信ログフォルダは検索対象となりません。




上検索/下検索
 ダイアログボックスに入力された条件で検索を実行します。このボタンを押さなくても、たとえばF3キーに「下検索」を割り当てている場合には、ダイアログボックスが出ている時にF3キーを押せば、すぐに検索を開始します。

 検索コマンド(秀丸メール本体側)


適用
 ダイアログボックスを確定させつつも、検索自体は実行しません。
 「検索文字列を強調」のオプションONの場合はメール一覧およびメール内容枠上で検索文字列の強調を実行します。同様に「スクロールマップ」がONだとスクロールマップも表示します。
 (Version 6.31β24で追加)


追加の条件
 文字列ではなく、メールのフラグによる条件で検索したい場合にここのボタンを押して指定します。
 追加の条件のみを指定したい場合(文字列の検索はしない場合)には、「追加の条件」だけ設定して、「検索」の文字列欄には何も入力しないで検索を実行してください。

 「追加の条件」が何か指定されている場合には、ボタンの先頭にチェックマークが表示されます。

 追加の条件ダイアログボックス


文字コード
 検索文字列についての文字コードを指定します。ここの指定はあくまで検索文字列についての文字コード指定であり、検索対象メールの文字コードを限定するための物ではありません。なので、例えば文字コードを「欧文」と指定して検索文字列に「A」と指定しても、 日本語メール中の「A」にもヒットします。また、欧文文字での特殊文字を検索すると、それと同じ文字コードの日本語の文字(例えば半角カナなど)にヒットしてしまうことがあります。

■WindowsNT/2000/XPまたはそれ以降のWindowsの場合
 ここは「(自動)」にしておいて、検索文字列には任意の言語の文字を入力すれば、普通はそれで文字コードが自動判定されます。しかし、例えば中国語と日本語で同じ漢字が存在している場合などで、中国語で検索させたい場合には、 ここの所で文字コードを指定してください。


■Windows95/98/Meの場合
 Windows95/98/Meの場合は、文字コードを適当に切り替えないと、欧文文字や中国語などが入力できません。ここで文字コードを切り替えてから、必要な外国語文字を入力してください。




検索文字列を強調
 検索結果の一覧上で「内容の表示」をONにして内容表示した場合に、そこの中で検索でヒットした文字列を強調表示するかどうか指定します。さらに、メール一覧の中でのヒット対象のメールについても、 「全般的な設定・メール内容表示・記号類の表示とカラー...・検索文字列の強調」で指定した色で強調表示するようになります。
 ここのオプションをONにしても、検索条件の指定によってはメール内容中の対象文字列が強調表示されません。たとえば検索条件を複数指定した場合や「追加の条件」を指定した場合や、「改行/空白を無視」、 「見つからなかった方を対象とする」をONにした場合はだめです。


スクロールマップ
 メール一覧(または検索結果の一覧上で実行した場合は検索結果一覧)の縦スクロールバー上に、検索でヒットするメールの位置をマップのように表示します。Windows8.1以上の場合にのみこのオプションが表示されます。


●検索条件の履歴について
 検索ダイアログボックスの左上のシステムメニュー(▼マーク)をクリックすると、検索条件の履歴がテキストで表示されます。履歴を選択すると、過去の検索条件で再検索することができます。

 検索条件は20個まで記憶されます。

 システムメニューはマウスで操作する他に、キーボードでAlt+Spaceキーを押しても出すことができます。
 検索条件の履歴の上でマウス右ボタンを押すと、「ヒストリに常駐」などのメニューが表示されます。そこで常駐を指定すると、メニュー項目の右端に星マークが出てきて、その項目は履歴から消えなくなります。


●検索文字列の履歴について
 検索文字列を入力する欄の「▼」を押すか、または下矢印キーを押すと、検索文字列についての履歴が表示されます。そこでマウス右ボタンを押すと、検索条件の履歴と同様に「ヒストリに常駐」などが指定できます。(V6.10より)
 補足:検索文字列の履歴機能は、WindowsXP以上でのみ有効です。Windows95/98/Me/2000では機能しません。


●検索コマンド実行時の初期値について
 検索コマンドを実行すると、最初から「検索」の欄に文字列が入り、そのまま「下検索」ボタンを押すだけで検索できます。ここで表示される初期値には、以下のような法則があります。 その法則を知っていると検索が多少楽になります。

メール一覧がアクティブの時
 メール一覧がアクティブの時は、「検索」の欄には現在選択しているメールの件名部分(「Subject:」ヘッダの内容)が初期値として入ります。


メール内容枠がアクティブの時で、何か範囲選択している時
メール内容枠がアクティブの時で、文字カーソル表示がONの時
 何か範囲選択した状態だと、その選択した文字列またはカーソル位置の文字が「検索」欄に入ります。
 ちなみにこの状態でさらに検索コマンドに割り当てられたキー(例えば標準の状態ならCtrl+Fキー)を押せば、「検索」欄の文字列にメール中の次の単語部分も取り込むことができます(秀丸エディタでも同様です)。


その他の時
 その他の場合、検索欄は空白になります。




●検索を高速化するコツ
 秀丸メールは、メール一覧の表示用のキャッシュデータをメモリ上に持っています。検索の処理が、もしもそのキャッシュデータを対象として実行する場合には、メール用のファイルにアクセスすることなく、すべてメモリ上で検索処理を実行出来ます。
 検索を高速化するためには、なるべくメール用ファイルにアクセスさせないで検索出来るような条件を指定するのがいいです。
 そのコツをいくつか列挙します。

  • メールアドレス検索またはMessage-Id検索は大変高速です。さらにはメールアドレス検索での「おおざっぱ検索」をONにするか、または対象ヘッダを絞り込めば絞り込む程高速に検索します。特に「From:」のみを対象としたメールアドレス検索は一番高速です。
  • 「対象(X):」の所に「件名(Subject)」または「メモ」または「From/To列表示用のキャッシュ」を指定すると高速です。ただし、Subject:ヘッダが極端に長い場合やメモ内容が極端に長いメールがある場合は遅くなります。それと、条件1〜条件4で別々の対象(X)を指定した場合も遅くなります。
  • 「追加の条件」を指定すると高速化します。例えば「添付ファイル付きメール」のフラグを指定した場合、添付ファイル付きのメールかどうかをメモリ上で判断した上で、添付ファイル付きであることが確かなメールについてのみメール用ファイルにアクセスして検索する形になり、結果、ファイルアクセス量を激減させることが出来ます。
  • 複合的な条件を指定する場合は、条件1にてあえて高速になる用の条件を指定した上で、条件2以降を指定するのがおすすめです。例えば「From:がAAAAでTo:がBBBBのメール」を探したい場合には、まずは条件1の方で「To:From:表示用のキャッシュ」を指定して、そこに正規表現で「AAAA|BBBB」みたいな条件を指定すれば、条件2以降の判定に行くメールが限定できて、高速になります。


●ダイアログボックス上のオプションの初期値の指定
 検索コマンド実行直後の「大文字/小文字の区別」や「単語の検索」などのオプションをONまたはOFF固定にするには、マクロによるコマンド置き換えを使うやり方があります。検索して一覧作成のヘルプの中にあるマクロを参考に、そこにあるマクロの「40066」の所を「40013」に置き換えれば、「検索」コマンドの置き換えに使えるようになります。