MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

条件が入り組んだメッセージ振り分け
https://forums.mozillazine.jp/viewtopic.php?f=3&t=14160
ページ 11

作成者:  shimuchi [ 2013年7月03日(水) 22:11 ]
記事の件名:  条件が入り組んだメッセージ振り分け

お世話になります。
メッセージ振り分け方法について、教えてください。


メールの件名に、AAA若しくはBBBという文字列を含んでおり、さらに宛先(To)にメールアドレス:CCC含まれている
メールはフォルダXXXに振り分け、宛先(To)にメールアドレス:CCC含まれていないメールは
フォルダYYYに振り分けるという設定を行いたいのです。

どのようなメッセージフィルタの設定を行えばよろしいでしょうか。

以上、よろしくお願いします。

作成者:  偶然的通行人 [ 2013年7月04日(木) 08:14 ]
記事の件名:  Re: 条件が入り組んだメッセージ振り分け

※質問するときは、フォーラムの利用に関するご案内 、とりわけ 質問するときは に目を通し、OS の種類や Thunderbird のバージョンといった使用環境についての最低限の情報を書き添えることをお勧めします。

ご提示の文面から考えられる範囲でのアドバイスになりますが......。

shimuchi さんが書きました:
メールの件名に、AAA若しくはBBBという文字列を含んでおり、さらに宛先(To)にメールアドレス:CCC含まれている
メールはフォルダXXXに振り分け、宛先(To)にメールアドレス:CCC含まれていないメールは
フォルダYYYに振り分けるという設定を行いたいのです。

やり方はいくつかあると思いますが、至極単純にいえば次の4つのメッセージフィルタを作ればいいのではないでしょうか?
1つのフィルタにすべてを盛り込もうとすると行き詰まってしまうと思います。コツは、最終的に実現したい全体像を、いったん最小単位に分解してみること(入り組んだものをできるだけ単純化すること)です。それでやりたいことの構造が見えてきますし、その上で合体させていい部分は合体させて合理化を図ることもやりやすくなると思います。
下記の例は、分解した条件を単純にフィルタにしてみたものです。

(1)
・すべての条件に一致
 [件名] - [に次を含む] - [AAA]
 [宛先] - [に次を含む] - [CCC]
以下の動作を実行する
 [メッセージを移動する] - [XXX]

(2)
・すべての条件に一致
 [件名] - [に次を含む] - [BBB]
 [宛先] - [に次を含む] - [CCC]
以下の動作を実行する
 [メッセージを移動する] - [XXX]

(3)
・すべての条件に一致
 [件名] - [に次を含む] - [AAA]
 [宛先] - [に次を含まない] - [CCC]
以下の動作を実行する
 [メッセージを移動する] - [YYY]

(4)
・すべての条件に一致
 [件名] - [に次を含む] - [BBB]
 [宛先] - [に次を含まない] - [CCC]
以下の動作を実行する
 [メッセージを移動する] - [YYY]

すでにご承知かもしれませんが、Thunderbird のメッセージフィルタの概要は、下記の公式サポート記事をご覧ください。
mozilla.jp/thunderbird/support/tutorials/organize#arrange-filter
mozilla.jp/thunderbird/support/kb/002627

(注意点)
件名に AAA と BBB を同時に含む場合の対応を個別にとりたいかどうかで、考慮すべき条件設定は変わってきます。
件名に含まれるのが [AAA のみ] [BBB のみ] [AAA かつ BBB] を区別する必要はなく、単純にどちらかが存在すればよいのなら、上記の設定例でも問題はないと思います。

件名の AAA や BBB の具体的な内容によっては、さらに一工夫必要かもしれません。
AAA と BBB が、「経理報告」「開発部」のような概念の異なる文字列なら問題は起こりにくいですが、「至急」と「大至急」、「重要」と「最重要」などの文字列だと、それらを区別する必要があるか否かで対応は変わってきます。
区別する必要がないなら、「至急」の中に「大至急」を含めて解釈してしまえばすむ話です。
しかし区別する必要があるなら、その区別をふまえた条件指定が必要になります。
仮に AAA が「至急」で、「大至急」は除外したいとしても、上記(1)(3)のフィルタ設定であれば「大至急」も合致したものと判断されます。
一方、AAA が「大至急」だとすると、件名に「至急」とだけあるメッセージは上記(1)(3)のフィルタ条件に合致しないと判断されます。

受信メッセージの [宛先] は通常、受取人である自分自身です。
しかし、同報送信で複数の宛先が列記される場合もありますし、Bcc 用に差出人本人が入っているケースもあります。
この CCC がどういう性格・位置づけかは存じませんが、仮に Cc に CCC のアドレスが存在したとき、To に CCC が存在した場合と同等に処理したいのかどうかによっては、その条件をメッセージフィルタに反映させる必要が生じるでしょう。

他にも考慮すべき事柄があるかもしれませんが、抽象化された例示ではそのあたりまでは判断できません。
ご承知のこととは存じますが、メッセージフィルタは条件の文字列を機械的に検索して指定された動作をおこなうだけで、その文字列の意味や概念までは斟酌してくれません。実際に条件として設定する文字列と、ユーザーがそこに込めている意味によっては、上記の設定例のままでは通用しないこともあると思います。
その場合は、必要に応じてご自身で条件設定をアレンジしてください。
各フィルタの条件定義が重複せず完全に独立しているなら、ひとつの受信メッセージに対して順番にフィルタを適用させることで、合致したフィルタの動作をとってくれるはずです。

とりあえず以上です。的外れな話だったらすみません。

【おことわり】
ゲスト(未登録)ユーザーで投稿しようとした場合、本文にフル URL や [url] タグで設定されたリンクがあるとスパム判定されるケースがあり、今回もその制約に引っかかって投稿できませんでした。「URL を自動的にパースしない」の設定でもはじかれたので、参照先 URL のうちプロトコル部分を省略して掲載してあります。ご容赦ください。
省略された URL をロケーションバーへコピー&ペーストすれば、ブラウザの自動補完機能で目的のサイトを開いてくれると思います。

作成者:  kiki [ 2013年7月04日(木) 22:06 ]
記事の件名:  Re: 条件が入り組んだメッセージ振り分け

  
*質問・投稿する前に、サポートサイトやヘルプ、このフォーラム内を検索・閲覧して
 確認してみましょう。
 また、広くインターネット上で、同類・類似事例がないか、調べてみましょう。
*質問・投稿する前に フォーラムの利用について をしっかり読んで、その内容を理解
 した上で、それに沿って投稿しましょう。
*ご自分の利用環境として、正確な OS の種類と Thunderbird のバージョンぐらいは
 書き添えましょう。
*質問した後やアドバイスをもらった後は、放置せずに、結果や経緯を必ず書くように
 しましょう。ここは、ユーザ同士で、各種情報・事例を、シェアする場です。
 
 
 
偶然的通行人 さんが、紹介されている 4 つのフィルタ条件内容で、可能かと思われます。

当方は、以下のように 2 つを考えてみました。

-------------------------順位1----------------------------------
フィルタ名:件名(AAA or BBB)+宛先(CCC)=フォルダ(XXX)
フィルタを適用するタイミング:メールチェック時と手動実行
 すべての条件に一致
[件名] + [に次を含む] + [AAA]
[件名] + [に次を含む] + [BBB]
[宛先] + [に次を含む] + [CCC]
以下の動作を実行する:[メッセージをコピーする] + [XXX]
------------------------------------------------------------------

-------------------------順位2----------------------------------
フィルタ名:件名(AAA or BBB)+宛先(Not CCC)=フォルダ(YYY)
フィルタを適用するタイミング:メールチェック時と手動実行
 すべての条件に一致
[件名] + [に次を含む] + [AAA]
[件名] + [に次を含む] + [BBB]
[宛先] + [に次を含まない] + [CCC]
以下の動作を実行する:[メッセージをコピーする] + [YYY]
------------------------------------------------------------------


【補足】
1.実際には、試していないので、もれなく正しい挙動になるかは、不明です。
2.テスト用のフォルダを用意して、メッセージフィルタが、希望どおりに作動している
  ことを確認するのが、いいでしょう。  
3.動作設定は、とりあえず [メッセージをコピーする] でおこなってみて、問題なければ、
  [メッセージを移動する] にされたほうが、よろしいかと思います。
4.メッセージフィルタは、上から順番に、処理動作することを、念頭においてください。
  順位を考慮しないと、意図通りに作動しません。 

作成者:  通行人 [ 2013年7月08日(月) 06:26 ]
記事の件名:  Re: 条件が入り組んだメッセージ振り分け

基本的には他の方の回答でつくされていますので、補足と考え方だけを。

メッセージフィルターでは、
(A) 一つのフィルターのルールの中では、全ての条件のAND、または、全ての条件のOR、でしか条件を設定できない、
(B) あるメールに対して、フィルターのルールは、上から順番に適用される、
ようになっていますから、
基本的には、If (c1 AND C2 AND C3) OR (c4 AND C5 AND C6) OR (c7 AND C8 AND C9) ...{アクションX}を、
Rule-1 : If (c1 AND C2 AND C3) {アクションX}
Rule-2 : If (c4 AND C5 AND C6) {アクションX}
Rule-3 : If (c7 AND C8 AND C9) {アクションX}
のように、OR を Ruleの分割で実現し、各RuleではANDで条件を設定する、という形でしか、条件のネストはできません。

また、以下のような特性があります。
(C) アクションは、大きく分けて、(1) タグをつけるなど、(2) フォルダーにコピー、(3) フォルダーに移動、削除、(4) そのメールに対して以降のルールの適用を停止、のカテゴリーに分かれている。
(D) あるメールに対するアクションの実行は、フィルタールールの中で指定したアクションの順番に関わらず、(C)のカテゴリーの順番に実行される。
従って、ルールの中で、フォルダーにコピー、タグを付ける、の順番で書いても、タグを付ける、が先に行われるので、コピーされたメールにはタグがつく、ということになる。
(E) (3) のタイプの、フォルダーに移動、削除、のアクションは、実行された時点で対象のメールがINBOXからなくなるのでそれ以降のルールの適用はなされない、つまり、「そのメールに対して以降のルールの適用を停止」というアクションを内在している。

(E)によって、「フォルダーに移動」というアクションがあると、あるメールに対するルールの適用はそこで終わりますから、
「フォルダーに移動」をアクションに持つルールの連続は、
Rule-1 : If (条件1){フォルダー1に移動}
Rule-2 : Else If (条件2){フォルダー2に移動}
...
Rule-(N-1) : Else If (条件(N-1)){フォルダー(N-1)に移動}
Rule-N : Else If (条件N){フォルダーNに移動}
と同等になります。
あるメールに「条件N」がヒットする、ということは、そのメールは、条件1から条件(N-1)が成立しなかった 、ということになります。
従って、「条件N」の中では、「条件1の否定」... 「条件(N-1)の否定」、は、書かなくてもよくなります。

shimuchi さんが書きました:
メールの件名に、AAA若しくはBBBという文字列を含んでおり、さらに宛先(To)にメールアドレス:CCC含まれているメールはフォルダXXXに振り分け、
宛先(To)にメールアドレス:CCC含まれていないメールはフォルダYYYに振り分けるという設定を行いたいのです。

「フォルダーに移動の場合は前のルールの条件の否定は書かなくてもいい」ということを利用すると、この例の場合は、
Rule-1 : If 宛先(To)にメールアドレス:CCCが含まれていないメール、Then フォルダYYYに移動
Rule-2 : Else If AAA若しくはBBBという文字列を含んでいるメール、Then フォルダXXXに移動、
と、順番を工夫するだけで、コンパクトに表現できます。
あるメールに対してRule-2のチェックに進むのは、『「CCCが含まれていないメール」ではないメール』=『CCCが含まれているメール』の時だけになりますから、条件として書かなくてもすみます。

以上を踏まえ、
(1) 始めの方に、フォルダーに移動、削除、そのメールに対して以降のルールの適用を停止、のカテゴリーに入らないアクションだけを持つルールを適当に並べる。
あるメールに対するルールの適用は停止せず、上から順番に実行されるだけなので、任意の順番で並べられるし、条件も、ANDでもORでもどちらでもいい。
(2) 移動先のフォルダーごとに、条件nxを複数の条件のANDとして、
If 条件1A OR 条件1B OR ... OR 条件1Z {フォルダー1に移動}
Else If 条件2A OR 条件2B OR ... OR 条件2Z {フォルダー2に移動}
...
Else If 条件nA OR 条件nB OR ... OR 条件nZ {フォルダーnに移動}
のように整理する。
(3) OR ごとにルールを分割する。
Else If 条件nA {フォルダーnに移動}
Else If 条件nB {フォルダーnに移動}
...
Else If 条件nZ {フォルダーnに移動}
(4) (1) の中で、(3) に移動できるものは(3)に移動して、ルールの数を減らす。
というような感じで定義するといいでしょう。

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/