要望:秀丸から鶴亀メールを選択表示No.13406
さん 03/06/19 19:16
 
●要望  鶴亀メールの起動オプションに、Message-IDにより当該メールを(本体
側で)選択・表示させるオプションをつくっていただけないでしょうか。

 ずいぶん以前に、今後メーラーの開発競争は受信メール文の管理の面になると書
込んだことがありますが、ときおりあるメール文にメモを書きたいという要望など
はその一つの現れだと思います。
 この会議室でぱとさんが紹介されましたTaskPrizeは、その面でのある種の解決
策を示す優れたソフトだと思います。

 試用してみますと、TaskPrizeからの鶴亀メールの指定メール表示は非常に使い
やすいものですが、おそらくはこれは鶴亀の『裏技による任意コマンド実行』で実
現されているのではないかと思います。

 ただ、この方法は敷居が高く簡便とはいえません。秀丸本体をはじめ、他の『受
信メール文の管理』ソフトとの連携のために、Message-IDにより当該メールを(本
体側で)選択・表示させるオプションがあると非常に有用と思います。(私自身は
秀丸からの指定メールの表示に使いたいと思っています。)

 すでに秀丸HPのマクロライブラリには、sleep-walkerさんの
 Message-Id情報から該当メールへジャンプ Ver.0.02 (IDJump.mac)

がありますが、惜しいことに、これは鶴亀メール起動オプションのgrepオプション
によっているため、「検索して一覧」の表示状態になってしまいます。
 無論、ここから本体側で選択させるのは可能ですが、せっかくMessage-Idという
一意性が保証されているものを検索条件に使っていながら、一手順増えてしまうの
は残念です。

 ということで、前記要望を出しました。よろしくお願いします。


[ ]
RE:13406 要望:秀丸から鶴亀メールを選択No.13407
たけのこ さん 03/06/19 19:25
 
たけのこです。

>  無論、ここから本体側で選択させるのは可能ですが、せっかくMessage-Idという
> 一意性が保証されているものを検索条件に使っていながら、一手順増えてしまうの
> は残念です。

実装されるか否かはさておき、Message-Idは一意じゃないですよ。
再現方法(の、一つ):メールを右クリック→フォルダへコピー

(^^)/”

[ ]
RE:13406 要望:秀丸から鶴亀メールを選択No.13408
ぱと さん 03/06/19 19:54
 
>●要望  鶴亀メールの起動オプションに、Message-IDにより当該メールを(本体
>側で)選択・表示させるオプションをつくっていただけないでしょうか。

確か、以前この件は話題になったと思います。どういう顛末になったか忘れてし
まいましたが・・・

> 試用してみますと、TaskPrizeからの鶴亀メールの指定メール表示は非常に使い
>やすいものですが、おそらくはこれは鶴亀の『裏技による任意コマンド実行』で実
>現されているのではないかと思います。

nao さんのプラグインでは実は裏技は使っていないです。あのプラグイン自体が、
動的に鶴亀のマクロファイルを生成して、それを起動オプションで実行するとい
う方法によっています。

ただ、最後に該当メールを開く部分がありますね。仕事場の環境でないとメール
が揃ってないので、ちょっと確認できませんが、明日になればもう少し nao さ
んのプラグインの仕組みを説明できると思います。

----
ぱと

[ ]
RE:13408 要望:秀丸から鶴亀メールを選択No.13411
秀まるお2 さん 03/06/19 21:40
 
 たけのこさんの話と重なりますが、Message-Idが同じメールが2つ以上存在す
る可能性があるので、単純にMessage-Idからメールを開くような機能は鶴亀メー
ルとしては対応しないことに決めました。

 その代わり、「検索・Message-Id検索」というのがあります。しかもこれは非
常に高速です。

 Message-Idからメールを開くなら、このへんの操作に相当することをマクロで
実現すればいいと思います。または、何らかの形でメール用のファイルとオフセ
ット(ファイル先頭からのバイト数)がわかるなら、/vFオプションを使ってい
きなりメールを開くことができます。サーチクロスというソフトからは、そのオ
プションでメールを開いてもらってます。

[ ]
RE:13411 要望:秀丸から鶴亀メールを選択No.13412
fun さん 03/06/19 22:41
 
 秀まるおさん、こんにちは funです。

> その代わり、「検索・Message-Id検索」というのがあります。しかもこれは非
>常に高速です。

この「検索・Message-Id検索」がV2.91では正しく動作してないような?
私の環境だけでしょうか?
受信メールのヘッダをすべて表示して、表示されたMessage-IDをコピーして
検索をしても1件も該当しません。


こちらの環境はWindowsXP SP1+IE6SP1 + 鶴亀 V2.91です。

[ ]
RE:13412 要望:秀丸から鶴亀メールを選択No.13413
かわした さん 03/06/19 23:29
 
かわしたです。

>この「検索・Message-Id検索」がV2.91では正しく動作してないような?
>私の環境だけでしょうか?
>受信メールのヘッダをすべて表示して、表示されたMessage-IDをコピーして
>検索をしても1件も該当しません。

funさんとほぼ同じ環境ですが、こちらでは正常動作しています。
ありがちなのはMessage-IDの前後の<>を含んだまま指定してしまっ
ているというミスでしょうか。

ヘルプより抜粋---
>Message-Id文字列は、<>で囲まずに指定してください。

[ ]
RE:13413 要望:秀丸から鶴亀メールを選択No.13425
fun さん 03/06/20 09:38
 
 funです。

>funさんとほぼ同じ環境ですが、こちらでは正常動作しています。
>ありがちなのはMessage-IDの前後の<>を含んだまま指定してしまっ
>ているというミスでしょうか。
>
>ヘルプより抜粋---
>>Message-Id文字列は、<>で囲まずに指定してください。

<>では囲んでなかったです。

が、再起動したら現象がおきなくなりました。この件について忘れてくださ
い。お騒がせしました。すいません。

[ ]
RE:13411 要望:秀丸から鶴亀メールを選択No.13516
さん 03/06/26 17:47
 
鳩です。こんにちは。毎度遅れまして。

 『Message-Idという一意性が保証されているもの』などど強い言い方をしてしま
いました。こんな言い方をすれば誤りとなってしまいますね(冷汗)。

 『発信に対して付与され、非常に大きな周期で同一になるので、保証はできない
が通常の条件では同一になることはまず考えられないもの』とでもいえばいいので
しょうか、
 実用上、個人の送受信メール文程度の集合においては、充分な識別能力があるも
のだと思っています(こんどは大丈夫?)。

 『単純にMessage-Idからメールを開くような機能』は対応しないということです
が、鶴亀メールががMessage-Idに関してそこまで厳格なのはさすがと思う半面、し
たがって、簡便にターゲットのメールを開く機能がなくなってしまうのは残念に思
います。

 これがないためか、TaskPrizeでは何か独自の方法でされているようですし、
IDJump.macは検索結果表示にとどまっています。(それともあえてそのようにされ
たのでしょうか)
 なによりも、私を含めいつまでたってもマクロ初心者という薄幸のグループに
とって、試みる前に挫折が来ることになってしまいます。

 /vFオプションのサーチクロスのようなものは、上記と少し条件が違って、さら
に高い識別能力が必要のときということではないでしょうか。

 とはいえ、マクロからできればことたります(要するに秀丸からTaskPrizeのよ
うにできればいい)から、


》 Message-Idからメールを開くなら、このへんの操作に相当することをマクロで
》実現すればいいと思います。

 これはどのようにすればいいのでしょうか。
 よろしくお願いします。

[ ]
RE:13408 要望:秀丸から鶴亀メールを選択No.13517
さん 03/06/26 17:49
 
鳩です。こんにちは。
どうもありがとうございました。

》明日になればもう少し nao さ
》んのプラグインの仕組みを説明できると思います。

 これはどのようにされているのでしょうか。ぜひ説明してほしいと思っています。
 また、できればその生成されるマクロも公開していただけないでしょうか。

[ ]
RE:13516 要望:秀丸から鶴亀メールを選択No.13519
ひろ さん 03/06/26 18:18
 
 鳩さん今日は、ひろです。
> 》 Message-Idからメールを開くなら、このへんの操作に相当することをマクロで
> 》実現すればいいと思います。
>
>  これはどのようにすればいいのでしょうか。
>  よろしくお願いします。
 このことを考える前に、たけのこさんが書かれていますが、
> 実装されるか否かはさておき、Message-Idは一意じゃないですよ。
> 再現方法(の、一つ):メールを右クリック→フォルダへコピー
というように、条件に一致するメールが複数個有った場合どうするか? という
ことを教えて頂かないと、親切な方がマクロを書かれようとしても途方にくれ
てしまうと思います。逆に言うと、そういうことが有るので
> IDJump.macは検索結果表示にとどまっています
となっているのだと思います。

[ ]
RE:13516 要望:秀丸から鶴亀メールを選択No.13520
ぱと さん 03/06/26 18:36
 
鳩 さん

> これがないためか、TaskPrizeでは何か独自の方法でされているようですし、

nao さんのプラグインでは、次のようなマクロを動的に生成して、これを鶴亀の
起動オプションとして実行しています。

$$MsgId = "xxxxxxxxxxxxxx@maruo.co.jp";
loaddll "TKInfo.dll";
if(!result ) endmacro;
if(!dllfunc("IsTuruKame")) endmacro;
if(dllfunc("TuruKameVersion")<224){
message "鶴亀メール Ver2.24以上が必要です。";
endmacro;
}
$TopAccount = dllfuncstr("Account", 0);
#n = dllfunc("SelectFolder", $TopAccount, "");
#n = dllfunc("SetFindPack","( \"" + $$MsgId + "\" ,word, target=person),
messageidtarget=messageid, inmail=3");
#n = dllfunc("FindDown");

> とはいえ、マクロからできればことたります(要するに秀丸からTaskPrizeのよ
>うにできればいい)から、

というわけで、たとえば、秀丸のマクロで、上記のような鶴亀マクロを生成して、
これを起動オプションで、鶴亀に渡すところまで書けば、秀丸から、Message-Id
ジャンプができるのではないかと思います。

naoさんにどのように実現しているのか最初に聞いた時に、動的にマクロファイル
を生成する(つまり、マクロにはパラメーターが渡せないので)というアイデアを
聞き、いたく感心したものでした。

なお、TaskPrize から、Message-Id ジャンプを行うと、ユーザーフォルダに上記
のマクロ(msgidjump.mac)が残っているはずです。

ところで naoさんのプラグインに含まれる予定の鶴亀→TaskPrize へのクリッピ
ングのマクロは本当は私が修正版を naoさんにお届けしなければならないところ、
ずっと保留になってました。てっきり、naoさんが修正してくれたものが同梱され
ているものとばかり勘違いしてました。鶴亀の方に、メールファイルを確認無し
で、delete するというマクロコマンドが出来ましたので、以前の懸案(ヘッダを
加工する際にテンポラリファイルにメールをコピーし、それをゴミ箱に捨ててい
たため、同じ Message-Id のメールが、いずれかのフォルダとゴミ箱で重複する
問題)は解決したので、そのあたりを修正すれば、出来あがるはずです。ので、そ
のうちにやります。

----
ぱと

[ ]
RE:13519 要望:秀丸から鶴亀メールを選択No.13536
さん 03/06/27 13:51
 
鳩です。こんにちは。どうもありがとうございました。

》というように、条件に一致するメールが複数個有った場合どうするか? という
》ことを教えて頂かないと、親切な方がマクロを書かれようとしても途方にくれ

 厳格な方はどうしても気になってしまうものですね(苦笑)、明示しわすれまし
てすみません。

 対象範囲ではひとつしかないと考えます、したがって、最初に見つかったものの
選択表示です。
 重複メールなどでは、同じものですからどちらをつかんでも同じと考えます。

 もちろん、いろいろなケースはあり得ます。
 たとえば重複に気づかず、一方のX-memoに何か記入してしまったが、先掴み優先
のMessage-Id検察では運悪く取出せないということもあるでしょう。しかしまあこ
の可能性は極めて低く、流れ星に当って怪我をするようなものと考えます。

 よろしくお願いします。

[ ]
RE:13520 要望:秀丸から鶴亀メールを選択No.13537
さん 03/06/27 13:52
 
鳩です。こんにちは。どうもありがとうございました。

》動的にマクロファイル
》を生成する(つまり、マクロにはパラメーターが渡せないので)というアイデアを
》聞き、いたく感心したものでした。

 なるほど、パラメータを渡す代りに起動時マクロをまるごと作ってしまうという
ことですか、
 TKInfo.dllと起動時マクロ生成でたいていはできてしまうことですね。もちろん、
マクロ作成の力量があればですが。こちらも、いたく感心しております。

 msgidjump.macはありました。それにしても、

》#n = dllfunc("SetFindPack","( \"" + $$MsgId + "\" ,word, target=person),
》messageidtarget=messageid, inmail=3");

 ( \"" + $$MsgId + "\" はなんでしょう、この検索パック文字列には???です。

[ ]
RE:13537 要望:秀丸から鶴亀メールを選択No.13539
ぱと さん 03/06/27 15:11
 
鳩 さん

>》#n = dllfunc("SetFindPack","( \"" + $$MsgId + "\" ,word, target=person),
>》messageidtarget=messageid, inmail=3");
>の
> ( \"" + $$MsgId + "\" はなんでしょう、この検索パック文字列には???です。

検索パック文字列は、難しいんですよねえ。私もいつも実際に使う時には、みよ
うみまねなどでやりながら、書きますけれど、終わると、また忘れてしまうので、
ゼロからでは書けませんね。\がエスケープ文字だということと、その働きを理解
しなくてはいけないようです。

----
ぱと

[ ]
RE:13536 要望:秀丸から鶴亀メールを選択No.13543
ひろ さん 03/06/27 19:18
 
 鳩さん今日は、ひろです。
>  対象範囲ではひとつしかないと考えます、したがって、最初に見つかったものの
> 選択表示です。
 「最初」というのが何処を起点としてどの様に検索した場合か解りませんが、
取り敢えずまず微のマクロで如何でしょうか?
//----------------------- xmessage.mac ------------------------------
openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
$TuruKameDir = getregstr("TuruKameDir");
closereg;
$ini = macrodir + "\\message-id.ini";
loaddll $TuruKameDir + "tkinfo.dll";
if( dllfunc("IsTuruKame") ){
  $id = getinistr( $ini, "ID", "ID" );
  if( $id == "" ){
    $id = input( "ジャンプするメールの Meessage-ID は?" );
    if( $id == "" )goto End;
  }
  $id = dllfuncstr( "YenEncode", $id );
  $s = dllfuncstr( "GetFindPack" );
  if( !dllfunc( "SetFindPack",
    "(\"" + $id +
    "\", word, target=person),messageidtarget=messageid, subfolder=1, inmail=3"
    ))goto Error;
  if( !dllfunc( "FindDownInclude" ) ){
    if( !dllfunc( "FindUpInclude" ) )message "見つからない";
  }
  if( !dllfunc( "SetFindPack",$s ))goto Error;
  writeinistr $ini, "ID", "ID", "";
}
else{
  $id = input( "ジャンプするメールの Meessage-ID は?" );
  if( $id == "" )goto End;
  writeinistr $ini, "ID", "ID", "\"" + $id + "\"";
  run "\"" + $TuruKameDir + "turukame.exe\" /xmessage.mac";
}
goto End;

Error:
  message "DLL 関数失敗";
End:
  freedll;

[ ]
RE:13543 要望:秀丸から鶴亀メールを選択No.13608
さん 03/07/02 12:44
 
鳩です。こんにちは。どうもありがとうございました。

》 「最初」というのが何処を起点としてどの様に検索した場合か解りませんが、
》取り敢えずまず微のマクロで如何でしょうか?

 全体から捜すわけですから、MsgIDJump.mac(hidesoft.8:13520)のように先頭
アカウントの先頭フォルダーからでいいと思います。

 作っていただいたもの(xmessage.mac)を動かしてみましたが、
  run "\"" + $TuruKameDir + "turukame.exe\" /xmessage.mac";

  run "\"" + $TuruKameDir + "turukame.exe\" /xxmessage.mac";
ですね。はじめは変な動きをして、???でした。

 機能としてはこれでOKですが、実際に使うときにはダイアログにMessage-Idを
入力するのはちょっと不便と思います。

 テキストファイルに書かれたMessage-Idからもとのメールを捜すのですから、や
はりTskPrizeやIDJump.mac(鶴亀マクロライブラリにあり)のように、
『Message-Idのある行にカーソルをおいて』マクロを起動すると当該メールを検索
する方式がいいと思います。

 また、メールのMessage-IdをクリップするのはすでにぱとさんのClipMailID.mac
がありますから、これが使えると便利です。
 IDJump.macもすでにユーザーが存在するかと思いますから、このマクロの要求す
るMessage-Idの形式にもあうと、より有用と思います。

Message-ID:の行の形式は、IDJump.macは
Message-id: <xxxxxxxxxxxxxx@maruo.co.jp> 
(他にMessage-ID: Message-Id:も可)

ClipMailID.macは
MailID:<xxxxxxxxxxxxxx@maruo.co.jp>
になります。
 よろしくお願いします。

 ところで、このxmessage.macは秀丸から起動されてメール検索をする一方、鶴亀
が非起動状態なら、鶴亀起動時マクロとして自分自身を起動して検索するのですか。
うーむ、いろいろなやりかたがあるものですね。



[ ]
RE:13608 要望:秀丸から鶴亀メールを選択No.13609
ぱと さん 03/07/02 13:07
 
鳩 さん

> また、メールのMessage-IdをクリップするのはすでにぱとさんのClipMailID.mac
>がありますから、これが使えると便利です。
> IDJump.macもすでにユーザーが存在するかと思いますから、このマクロの要求す
>るMessage-Idの形式にもあうと、より有用と思います。
>
>Message-ID:の行の形式は、IDJump.macは
>Message-id: <xxxxxxxxxxxxxx@maruo.co.jp> 
>(他にMessage-ID: Message-Id:も可)
>
>ClipMailID.macは
>MailID:<xxxxxxxxxxxxxx@maruo.co.jp>
>になります。
> よろしくお願いします。

ClipMailID.mac は、TaskPrize のプラグイン作者の nao さんが書いたマクロで
す。で、この形式は、TaskPrize の他のメーラー用(Becky2,EdMax)用のものとフ
ォーマットを合わせてあるのだと思います。

TaskPrize では、上記のメールID の部分がクリッカブルになっているわけですが、
秀丸上でも鶴亀上でも、Message-Id もメールアドレスとして認識してしまうでし
ょうから、クリッカブルとするのは難しいでしょうね。

----
ぱと

[ ]
RE:13609 要望:秀丸から鶴亀メールを選択No.13610
さん 03/07/02 14:32
 
鳩です。こんにちは。

》クリッカブルとするのは難しいでしょうね。

 私もそう思います。したがって、

 Message-IDを書いた行(の形式だけ)をあわせ、当該行にカーソルをおいて、
(クリッカブルではなく)キー割当てしたキーややツールバーからマクロを起動し
て検索するということです。

[ ]
RE:13608 要望:秀丸から鶴亀メールを選択No.13613
ひろ さん 03/07/02 17:08
 
 鳩さん今日は、ひろです。
>   run "\"" + $TuruKameDir + "turukame.exe\" /xmessage.mac";
> は
>   run "\"" + $TuruKameDir + "turukame.exe\" /xxmessage.mac";
> ですね。はじめは変な動きをして、???でした。
 ファイル名を書く時点で間違えていました(^^;。

>  テキストファイルに書かれたMessage-Idからもとのメールを捜すのですから、や
> はりTskPrizeやIDJump.mac(鶴亀マクロライブラリにあり)のように、
> 『Message-Idのある行にカーソルをおいて』マクロを起動すると当該メールを検索
> する方式がいいと思います。
 この方法に変えました。

//----------------------- message.mac -----------------------------------------
openreg "CURRENTUSER","Software\\Hidemaruo\\TuruKame\\Config";
$TuruKameDir = getregstr("TuruKameDir");
closereg;
$ini = macrodir + "\\message-id.ini";
loaddll $TuruKameDir + "tkinfo.dll";
if( dllfunc("IsTuruKame") ){
  $$return = getinistr( $ini, "ID", "ID" );
  if( $$return == "" )call GetID;
  $$return = dllfuncstr( "YenEncode", $$return );
  $s = dllfuncstr( "GetFindPack" );
  if( !dllfunc( "SetFindPack",
    "(\"" + $$return +
    "\", word, target=person),messageidtarget=messageid, subfolder=1, inmail=3"
    ))goto Error;
  if( !dllfunc( "FindDownInclude" ) ){
    if( !dllfunc( "FindUpInclude" ) )message "見つからない";
  }
  if( !dllfunc( "SetFindPack",$s ))goto Error;
  writeinistr $ini, "ID", "ID", "";
}
else{
  call GetID;
  writeinistr $ini, "ID", "ID", "\"" + $$return + "\"";
  run "\"" + $TuruKameDir + "turukame.exe\" /x"
    + currentmacrobasename;
}
goto End;

Error:
  message "DLL 関数失敗";
End:
  freedll;
  endmacro;

GetID:
  ##y = lineno;
  ##x = column;
  right;
  searchup2 "message-id:", fuzzy;
  if( result && lineno == ##y ){
    selectline;
    $$id = gettext(seltopx, seltopy, selendx, selendy);
    while( rightstr( $$id, 1 ) == "\x0A" || rightstr( $$id, 1 ) == "\x0D")
      $$id = leftstr( $$id, strlen( $$id ) - 1 );
    $$id = rightstr( $$id, strlen( $$id ) - strstr( $$id, ":" ) - 1);
    while( ascii( $$id ) == ' ' )$$id = rightstr( $$id, strlen( $$id ) - 1 );
    if( ascii( $$id ) == '<' && rightstr( $$id, 1 ) == ">" )
      $$id = midstr( $$id, 1, strlen( $$id ) - 2 );
    return $$id;
  }
  escape;
  movetolineno ##x + 1, ##y;
  message "Meessage-ID が見つからない";
  goto End;

[ ]
RE:13613 要望:秀丸から鶴亀メールを選択No.13616
さん 03/07/02 18:57
 
鳩です。こんにちは。どうもありがとうございました。

ただ、どうもどちらのMessage-IDの形式の行に対しても
"Meessage-ID が見つからない"
となってしまいます。

調べていますが、どうもよくわかりません。

[ ]
RE:13616 要望:秀丸から鶴亀メールを選択No.13617
ひろ さん 03/07/02 19:28
 
 鳩さん今日は、ひろです。
> "Meessage-ID が見つからない"
 私の環境で上手く動作して、鳩さんの環境で上手くいかない理由はこの際省
略して、
>   searchup2 "message-id:", fuzzy;
の部分を、
  searchup2 "^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:", regular;
としてください。多分これで上手くいくと思います。

[ ]
RE:13617 要望:秀丸から鶴亀メールを選択No.13623
さん 03/07/03 10:22
 
鳩です。こんにちは。どうもありがとうございました。

》  searchup2 "^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:", regular;
》としてください。多分これで上手くいくと思います。

MailID:<xxxxxxxxxxxxxx@maruo.co.jp>
が動作しないのは当然としてMessage-id:は動きました。OKです。

 しかし何だろう。
 こちらの環境は、WIN98SE,秀丸は3.19,鶴亀は2.91です。
 もしかしたら、ひろさんの方は秀丸はβ版でしょうか。

 また、NEC・9821版のWIN95OSR2(古いですねー)ではIDJump.macも動かないよう
です。(少し試しただけですから動かないというは間違いかもしれません)
 こちらも秀丸は3.19,鶴亀は2.91です。

hidesoft.8:13412|(funさん)には
》この「検索・Message-Id検索」がV2.91では正しく動作してないような?
》私の環境だけでしょうか?
とありますが、関係あるかもしれません。

 いずれにしろ、どうもありがとうございました。

[ ]
RE:13623 要望:秀丸から鶴亀メールを選択No.13625
ひろ さん 03/07/03 17:29
 
 鳩さん今日は、ひろです。
>  もしかしたら、ひろさんの方は秀丸はβ版でしょうか。
 これも有ります。
 一番のミスは、私の環境にはあいまい検索のカスタマイズ・ツールを使って、
JRE32.DAT が作成されていることをすっかり忘れてた事です(^^;。

 あと行頭に書かれていない場合は発見できないので、それで都合が悪ければ、
>   searchup2 "^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:", regular;

  searchup2 "[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:", regular;
としてください。

[ ]