関連メール表示No.05399
cuma さん 02/06/06 18:20
 
こんにちはcumaです。
Becky2において、リストビューで「関連メール」ボタンを押すと、現在選択さ
れていたメールに関連するメールが受信フォルダと送信フォルダの両方から検索
されて、絞り込みされた一覧が出来ます。送信済みメールも含めて表示。
何回も応答をお互いに繰り返したメール交換をしていれば、それが全部集まりま
す。

鶴亀もメールアドレス検索ボタンを押す事で類似する検索(でも鶴亀のメールア
ドレス検索の方が重用)出来ます。

実際この方式の方が有効な場面が多いと思います。

それでも時々は関連メールを全部(たぶんスレッドがつながるようなメール)を
抽出する機能が便利な時もあります。

これってマクロで簡単に出来るものでしょうか?

[ ]
RE:05399 関連メール表示No.05403
たけのこ さん 02/06/07 09:20
 
たけのこです。

マクロで云々って言うか、送信済みメールも受信メールと同じ所に振り分けてお
けば(または同じ所に移動すれば)、あとでアクションを起こす必要はないんで
はないですか?
または、bccで自分宛に送っておくとか。

私は後者でやってますが。

[ ]
RE:05403 関連メール表示No.05405
cuma さん 02/06/07 14:20
 
 cumaです。

たけのこさん、こんにちは

>たけのこです。
>
>マクロで云々って言うか、送信済みメールも受信メールと同じ所に振り分
>けてお
>けば(または同じ所に移動すれば)、あとでアクションを起こす必要はな
>いんで
>はないですか?

ええと。
これは前提として入れないで考えたいのです。

私は業務用にメーラーを活用しており、新規商談の方々単位にフォルダを作成し
て手動で振り分けたり、あるいは自動振り分けを出来ないのです。
日々膨大な人数の新規顧客が発生するのですが、その中で成約に至る方は5%程
度ですし、リピーターになる方はさらに少ないです。

よってほとんどの商談メールは受信フォルダと送信済みフォルダにそのまま放置
するのが手間の無い対応となっております。
しかし突然問い合わせのTELが着た場合には、少々あわてて過去メールのやり
とりを確認しております。

この時に鶴亀のメールアドレス検索は非常に重宝しております。

今回の「関連メール全部表示」って言う話しは、上記だけなら不要でした。
上記にプラスしての話しですが、リピーター顧客の場合は、単純にメールアドレ
ス検索をすると過去何年ものデーターが出てしまいます。期間で絞り込めばまあ
いいのですが。

またメーリングリストでのメールも同様にアドレス検索では膨大な過去のメール
も出てしまいます。

しかし、今回の話題に限って関連メール(スレッドで連結される程度)を絞り込
みたい場合には、メールアドレス検索では無く、「関連メール表示」が欲しいの
です。

スレッドで見れば?とも言えますが、送信済みフォルダに入っている分はそうは
出来ず。顧客とのやりとりも出来れば関連メールで出来れば送信済みも出ますし。


>または、bccで自分宛に送っておくとか。

自分の業務アドレスは携帯および業務上の必要がある仲間に常時転送されており、
bcc送信すると、それら全部の相手先にも飛んでしまいます。特に携帯のimodeは
文字数課金される関係からbccの自分宛は避けておりました。

Becky2の関連メール表示は大変便利な機能だと思うのですが、マクロで簡単に
実現可能ならば?と安易に相談をだしてしまったのです。

もしマクロが難しいならば現状のメールアドレス検索で継続しようと思っており
ます。

[ ]
RE:05405 関連メール表示No.05406
たけのこ さん 02/06/07 14:34
 
たけのこです。

>スレッドで見れば?とも言えますが、送信済みフォルダに入っている分はそうは
>出来ず。

できます。つまり…

>よってほとんどの商談メールは受信フォルダと送信済みフォルダにそのまま放置
>するのが手間の無い対応となっております。
....                    ....
送信メールの振り分け先を受信フォルダにしておけば、勝手にスレッドはつなが
ります。

[ ]
RE:05405 関連メール表示No.05421
かわした さん 02/06/08 19:48
 
かわしたです。

以下のマクロでアカウント内のフォルダに散らばった同一スレッド
のメールが抽出できます。ただしスピードに難ありですけど。
# 6000通の中から40通のスレッドを抽出するのに、2分強かかって
# ます(^^; (PenIV 1.7GHz + WinXP)

そんなに長くないスレッドならなんとか使えるのではないでしょう
か。よかったらお使いくださいませ。

--
// PickupThread.mac
// 鶴亀本体でメールを選択して実行してください

$WorkFolder="抽出結果";
$FullPath="受信\\"+$WorkFolder;

loaddll "tkinfo.dll";
if(!dllfunc("IsTuruKameMain")){
  message "鶴亀本体で実行してください";
  goto EndLine;
}

#copiednum=0;
#setnum=0;
#n=dllfunc("MailType");
if(#n==3 || #n==4){
  ##n=dllfunc("DisableDraw",1);
  disableerrormsg;
  $$mid=dllfuncstr("CurrentHeader","Message-ID");
  $$cf=dllfuncstr("CurrentFolder");
  ##itv=dllfunc("IsThreadView");
  if(##itv)##n=dllfunc("SetThreadView",0);
  ##mi=dllfunc("MailIndex");
  if($$mid!=""){
    if(dllfunc("SelectFolder","",$FullPath )){
      question "前回の抽出結果を削除します。よろしいですか?";
      if(result==yes){
        #n=dllfunc("SetAutoPushTimerMilli", 100, "yes");
        #n=dllfunc("DeleteFolder");
      }
      else{
        message "処理を中止します";
        goto EndProc;
      }
    }
    #n=dllfunc("SelectFolder","","受信");
    #n=dllfunc("MakeFolder",$WorkFolder);
    ##n=dllfunc("SelectFolder","",$$cf);
    ##n=dllfunc("SetMailIndex",##mi);
    call MainProc;
  }
EndProc:
  ##n=dllfunc("SelectFolder","",$$cf);
  ##n=dllfunc("SetMailIndex",##mi);
  ##n=dllfunc("SetThreadView",##itv);
  ##n=dllfunc("SelectFolder","",$FullPath);
  ##n=dllfunc("SetThreadView",1);
  ##n=dllfunc("SetFindPack","(\""+$$mid+"\",target=\"Message-ID:\"),inmail=0");
  if(!dllfunc("FindDown")) ##n=dllfunc("FindUp");
  enableerrormsg;
  ##n=dllfunc("EnableDraw");
  message str(dllfunc("MailCountAll"))+"件のメールを抽出しました";
}
else{
  message "受信メールか送信済みメールを選択して実行して下さい";
}
EndLine:
endmacro;

MainProc:
  // 選択中のメール情報退避
  $$cf=dllfuncstr("CurrentFolder");
  if($$cf=="ゴミ箱") return; //ゴミ箱のメールは処理しない
  ##itv=dllfunc("IsThreadView");
  if(##itv) ##n=dllfunc("SetThreadView",0);
  ##mi=dllfunc("MailIndex");
  $$mid=dllfuncstr("CurrentHeader","Message-ID");
 
  // 該当メールが処理済なら処理しない
  ##i=0;
  while(##i<#copiednum){
    if($$mid==$copied[##i]) return;
    ##i=##i+1;
  }
 
  // 結果フォルダにコピー
  ##n=dllfunc("Copy","",$FullPath);
  $copied[#copiednum]=$$mid;
  #copiednum=#copiednum+1;
 
  // 返信メールかどうかのチェック
  $$tid=dllfuncstr("CurrentHeader","In-Reply-To");
  if($$tid==""){
    $$tid=dllfuncstr("CurrentHeader","References");
  }
 
  // 検索条件の作成
  if($$tid=="") $$sfp="(\""+$$mid+"\",target=\"In-Reply-To:\")or(\""+$$mid+"
\",target=\"References:\"),inmail=2";
  else{
    // 返信元メールIDが処理済みなら検索条件に入れない
    ##i=0;
    while(##i<#copiednum){
      if($$tid==$copied[##i]) break;
      ##i=##i+1;
    }
    if(##i==#copiednum){
      $$sfp="(\""+$$mid+"\",target=\"In-Reply-To:\")or(\""+$$mid+"\",target=
\"References:\")or(\""+$$tid+"\",target=\"Message-ID:\"),inmail=2";
      $copied[#copiednum]=$tid;
      #copiednum=#copiednum+1;
    }
    else $$sfp="(\""+$$mid+"\",target=\"In-Reply-To:\")or(\""+$$mid+"\",targ
et=\"References:\"),inmail=2";
  }
 
  // 関連メールの検索
  ##n=dllfunc("SelectFolder","","");
  ##n=dllfunc("SetFindPack",$$sfp);
  while(dllfunc("FindDown")){
    call MainProc;
    ##n=dllfunc("SetFindPack",$$sfp);
  }
 
  ##n=dllfunc("SelectFolder","",$$cf);
  ##n=dllfunc("SetMailIndex",##mi);
  ##n=dllfunc("SetThreadView",##itv);
  return;

[ ]
RE:05421 関連メール表示No.05422
cuma さん 02/06/08 20:57
 
かわしたさん、こんばんは

 cumaです。

今、早速試用させて頂きました。速度的に確かに基本機能として盛り込まれてい
るBecky2の関連メール表示みたいに瞬間表示とは行かないようですが、でもで
も私に取っては救世主的なマクロです。

そして抽出したメールが自動的に作成されたフォルダに格納される点も大変気に
入りました。

マクロメニューに登録して実用出来そうです。

今回の要望は特殊な要望だと思って取り下げたのですが、マクロをそのまま使え
る状態まで作り上げて提供して頂けた事に大変驚き感謝しております。

どうもありがとうございました。

[ ]
RE:05422 関連メール表示No.05427
かわした さん 02/06/08 22:35
 
かわしたです。気に入っていただけたようでなによりです(^^)

>今回の要望は特殊な要望だと思って取り下げたのですが、マクロをそのまま使え
>る状態まで作り上げて提供して頂けた事に大変驚き感謝しております。

以前個人的に作って使ってたものなんですが、cuma さんの話が出
た時点で UP しようとしたらバグがあることに気づきまして、その
バグつぶしにちょっと時間を取られてしまいました…

ということで、エラー処理も甘めですのでその辺ご勘弁ください。
なお秀丸マクロの仕様制限の為、最初のメールを基準に20階層程度
のスレッドまでしか抽出できませんのであしからず m(_ _)m

[ ]
RE:05427 関連メール表示No.05432
cuma さん 02/06/09 18:08
 
かわしたさん、こんにちは

>以前個人的に作って使ってたものなんですが、cuma さんの話が出
>た時点で UP しようとしたらバグがあることに気づきまして、その
>バグつぶしにちょっと時間を取られてしまいました…

なるほど、私の要望が自分だけの要望では無い事もあると言う事
で安心しました。
またバグ取り後のリリースと言う事でありがとうございます。
一発で動いたので驚いておりました。

>ということで、エラー処理も甘めですのでその辺ご勘弁ください。
>なお秀丸マクロの仕様制限の為、最初のメールを基準に20階層程度
>のスレッドまでしか抽出できませんのであしからず m(_ _)m

諸々了解です。この現状で私には十分です。
今後とも宜しくお願い致します。

[ ]
RE:05399 References, In-Reply-To およびNo.05434
ひろ さん 02/06/09 23:35
 
 秀まるおさん今日は、ひろです。
> Becky2において、リストビューで「関連メール」ボタンを押すと、現在選択さ
> れていたメールに関連するメールが受信フォルダと送信フォルダの両方から検索
> されて、絞り込みされた一覧が出来ます。送信済みメールも含めて表示。
> 何回も応答をお互いに繰り返したメール交換をしていれば、それが全部集まりま
> す。
 こちらに関係したことで、要望があります。
 メーラによっては、返信作成時に
(1)In-Reply-To については、返信元の Message-ID を
(2)References については、返信元の Message-ID および References の両方
になっているようです。それに対して、鶴亀では References についても、
(1)と同じです。RFC を確認していませんが、英語の意味や他のメーラのスレッ
ド作成のアルゴリズムを考えると、(2) がベターな気がします。
 鶴亀と同じ仕様はパッと見た限り、Al-Mail、電八、違うのは UNIX 系全般、
Becky!, OutLook, Netscape 系です。
 また (2) のようになれば、少なくとも鶴亀ユーザ間では、この投稿元の
「関連メール表示」のマクロが簡単かつ高速になります(^^)。

 鶴亀のスレッド連結については、その生成速度を考慮すると、(もう無くなっ
ているでしょうが、)
http://www.maruo.co.jp/turukame/2/m011024.html#4043
>  鶴亀メールはReferences:ヘッダ中に複数のメッセージIDが入っていた場合、
> 最後のメッセージIDだけをスレッド連結に使用し、他のメッセージIDはすべて
> 無視します。
で良いと思いますが、少なくともメール作成に関しては、(2) にして構わな
いと思います。
 速度がそれほど犠牲にならなければ、この仕様自体変更されると更に嬉し
い(^^)。何故なら ML の場合、返信元のメールが先に届くとは限らないので。

[ ]
RE:05434 References, In-Reply-To およびNo.05440
Kengo さん 02/06/10 15:19
 
> (2)References については、返信元の Message-ID および References の両方

私はマクロでそうやっています。
(一部抜粋)
----------
$s = dllfuncstr( "CurrentHeader", "References" );
$d = dllfuncstr( "RootHeader", "References" );
if( $s != "" && $d != "" ) {
    $s = $d + "\n " + $s;
    call formmsgid $s;
    $s = $$return;
    $s = dllfuncstr( "SetHeader", "References", $s );
}

// References用 メッセージID整形
// "<...>"を1行ごとに切り出す。
// 2行目以降は、行頭にTABを付ける。
formmsgid:
    $$s = $$1;
    $$t = "";
    $$bra = "<";
    $$ket = ">";
    ##bra_len = strlen( $$bra );
    ##ket_len = strlen( $$bra );
    while( true ) {
        ##bra_loc = strstr( $$s, $$bra );
        ##ket_loc = strstr( $$s, $$ket );
        if( ##bra_loc >= 0 && ##ket_loc >= 0 && ##bra_loc < ##ket_loc ) {
            $$msgid = midstr( $$s, ##bra_loc, ##ket_loc - ##bra_loc + ##ket_
len );
            if( $$t != "" ) {
                $$t = $$t + "\t";
            }
            $$t = $$t + $$msgid + "\n";
            $$s = midstr( $$s, ##ket_loc + ##ket_len, strlen($$s) - ##ket_lo
c - ##ket_len );
        } else {
            break;
        }
    }
return $$t;

[ ]
RE:05440 References, In-Reply-To およびNo.05441
ひろ さん 02/06/10 18:01
 
 Kengo さん今日は、ひろです。
> 私はマクロでそうやっています。
 マクロ有り難うございます。
 ただ投稿の趣旨は、鶴亀で (2) の様にする方法をお聞きしたいのではなく、
「ひょっとして (2) のように動作するのが、正しい若しくはベターではない
か?」ということです。

[ ]
RE:05441 References, In-Reply-To およびNo.05442
秀まるお さん 02/06/10 18:45
 
 たしかに僕もRFCを見た時に、References:ヘッダは関連するメールすべての(つま
りスレッドの親となるメールすべての)メッセージIDを入れるように読みとれました。

 将来的には直したいと思いますが、あまり重要な修正用件という訳でもないのでと
りあえずやめときます。

[ ]
RE:05442 References, In-Reply-To およびNo.05447
ひろ さん 02/06/10 19:47
 
 秀まるおさん今日は、ひろです。
>  たしかに僕もRFCを見た時に、References:ヘッダは関連するメールすべての(つま
> りスレッドの親となるメールすべての)メッセージIDを入れるように読みとれまし
>た。
 私は RFC を読んでいませんでしたが、やはりそうですか。

>  将来的には直したいと思いますが、あまり重要な修正用件という訳でもないのでと
> りあえずやめときます。
 将来的に修正されることを期待しますが、取り敢えず了解しました。

 ちなみにこう考えたことの発端は、スレッド元の投稿のように関連するメー
ルを探す際、件の仕様なら、末尾のマクロで簡単に検索できるのでないか?
と考えたためです。

 あとお返事は頂けませんでしたが、
>  鶴亀のスレッド連結については、その生成速度を考慮すると、(もう無くなっ
> ているでしょうが、)
> http://www.maruo.co.jp/turukame/2/m011024.html#4043
> >  鶴亀メールはReferences:ヘッダ中に複数のメッセージIDが入っていた場合、
> > 最後のメッセージIDだけをスレッド連結に使用し、他のメッセージIDはすべて
> > 無視します。
については、修正や他の要望を消化した方が建設的な気がしますので、忘却
の彼方へ押しやってください。
//-----------------------------------------------------------------------------
loaddll "tkinfo.dll";
$id = dllfuncstr( "CurrentHeader", "References" );
if( $id == "" )$id = dllfuncstr( "CurrentHeader", "Message-Id" );
$id = leftstr( $id, strstr($id, ">") + 1);
$id = dllfuncstr( "YenEncode", $id );
#tmp = dllfunc( "SetFindPack","(\"" + $id + "\", target=\"References:\")or(\""
  + $id + "\", target=\"Message-ID:\"), subfolder=1, inmail=3");
#tmp = dllfunc( "DoGrep", "", "");
freedll;

[ ]
RE:05442 References, In-Reply-To およびNo.05860
ひろ さん 02/09/23 21:47
 
 秀まるおさん今日は、ひろです。
 スゴく古いメールに対しての返信になりますが、
>  たしかに僕もRFCを見た時に、References:ヘッダは関連するメールすべての(つま
> りスレッドの親となるメールすべての)メッセージIDを入れるように読みとれまし
>た。
>
>  将来的には直したいと思いますが、あまり重要な修正用件という訳でもないのでと
> りあえずやめときます。
こちらについて、転送メールについてはどうなんしょうか?

 Winbiff では、References には、転送元メールの Message-ID だけが付加
される仕様でした。これならスレッドも繋がり便利だと思うのですが、また
また RFC は読んでいません(^^;。
 勿論スレッド連結は D&D でできることも、この場合の References ヘッダ
の付加はテンプレートで可能なことは解っていますが、RFC に従う形であれ
ば、仕様が変更されてもよいと考えての投稿です。

[ ]
RE:05860 References, In-Reply-To およびNo.05864
秀まるお さん 02/09/24 19:00
 
 鶴亀メールは、References:ヘッダに複数のメッセージIDが入っていても、ス
レッド表示時のコメント元メールとしては1つしか認識することが出来ない作り
になってます。

 そういう前提で言うと、転送メールの時にReferences:ヘッダに追加でメッ
セージIDを入れるのは、鶴亀メールのスレッド表示を乱す可能性があって、あま
り気持ちいい物ではないです。

 Winbiff以外のメールソフトがどうかも調べるといろいろ時間がかかるし、
References:ヘッダに複数メッセージIDを付加する処理も新規に作らないとダメ
かもしれないし、とにかくいろいろ検討しないといけない可能性があって奥が深
いかもしれないので、今の段階で何もしないでおきます。

[ ]
RE:05864 References, In-Reply-To およびNo.05866
ひろ さん 02/09/24 19:32
 
 秀まるおさん今日は、ひろです。
> とにかくいろいろ検討しないといけない可能性があって奥が深
> いかもしれないので、今の段階で何もしないでおきます。
 了解しました。

 P.S Al-Mail, Becky! では付けないようなので、どうやら Winbiff が特殊な
ようです。

[ ]