要望:送信先確認機能No.09081
dszhm さん 05/03/09 15:22
 
(主に職場からの送信時に)送信先を確認したいので、

1. 送信先を確認する機能そのもの
   送信先はLDAP定義で確認する。
   (送信先はアドレスブックから指定するので
     アドレスブック内の検索は意味が無い)

2. 1.を田楽DLLなどを使ってマクロで行う支援を
   する関数群(?)

のどちらかのサポートを検討いただきたいのですが?
よろしくお願いします。

[ ]
RE:09081 要望:送信先確認機能No.09082
秀まるお さん 05/03/09 16:23
 
 送信の確認は、現状で標準機能としては用意してないので、マクロを使って欲
しいです。特にLDAPでの検索もってことだとなおさらマクロでないと対応出来な
いです。

 マクロ用の関数として、DoLdapGrepってのが既にあるので、それでLDAPサー
バーからの検索は出来ます。

 参考のマクロを作ってみました。アドレス帳に「LDAP」という名前にてLDAP
サーバーが登録されてるという前提でのマクロですけど。


    loaddll "tkinfo.dll";
    #i = 0;
    #c = dllfunc("CountCurrentHeader", "To");
    while(#i < #c ) {
        $s = dllfuncstr("CurrentHeader2", "To", #i);
        if( $s != "" ) {
            call RetrieveEmail $s;
        }
        #i = #i + 1;
    }
    #i = 0;
    #c = dllfunc("CountCurrentHeader", "Cc");
    while(#i < #c ) {
        $s = dllfuncstr("CurrentHeader2", "Cc", #i);
        if( $s != "" ) {
            call RetrieveEmail $s;
        }
        #i = #i + 1;
    }
    #c = dllfunc("CountCurrentHeader", "Bcc");
    while(#i < #c ) {
        $s = dllfuncstr("CurrentHeader2", "Bcc", #i);
        if( $s != "" ) {
            call RetrieveEmail $s;
        }
        #i = #i + 1;
    }
    #i = 0;
    while( #i < #to ) {
        #n = dllfunc("DoLdapGrep", $to[#i], 1, "LDAP"
                    , "メールアドレス", 3 );
        $s = "";
        if( #n != 0 ) {
            $s = dllfuncstr("GetGrepResult", 0 );
        }
        if( $s != "" ) {
            $name = dllfuncstr("GetBookItemPart", $s, -1 );
            $note1 = dllfuncstr("GetBookItemPart", $s, 3 );
            $note2 = dllfuncstr("GetBookItemPart", $s, 4 );
            $note3 = dllfuncstr("GetBookItemPart", $s, 5 );
            $to[#i] = $to[#i]
                    + "  登録情報=" + $name
                    + "  / " + $note1
                    + "  / " + $note2
                    + "  / " + $note3;
        } else {
            $to[#i] = $to[#i] + "  登録されてない";
        }
        $total = $total + $to[#i] + "\n";
        #i = #i + 1;
    }
    $total = $total + "\n\nこの宛先で送信してもいいですか?";
    question $total;
    if( result != yes ) {
        #n = dllfunc("SetCancel", 1);
    }
    endmacro;

RetrieveEmail:
    ##i = 0;
    while(1) {
        $$s = dllfuncstr("GetEmailList", $$1, ##i);
        if( $$s == "" ) {
            break;
        }
        $to[#to] = dllfuncstr("SetEmailOnly", $$s);
        #to = #to + 1;
        ##i = ##i + 1;
    }
    return;

[ ]
RE:09082 要望:送信先確認機能No.09084
dszhm さん 05/03/09 22:13
 
> 送信の確認は、現状で標準機能としては用意してないので、マクロを使って欲
>しいです。特にLDAPでの検索もってことだとなおさらマクロでないと対応出来な
>いです。
>
> マクロ用の関数として、DoLdapGrepってのが既にあるので、それでLDAPサー
>バーからの検索は出来ます。
>
> 参考のマクロを作ってみました。アドレス帳に「LDAP」という名前にてLDAP
>サーバーが登録されてるという前提でのマクロですけど。

  マクロを提供していただき、ありがとうございました。
  いろいろ、環境と好みに合わせていじくりまわしてみたいと思います。

[ ]
RE:09082 要望:送信先確認機能No.09085
dszhm さん 05/03/09 23:06
 
> 参考のマクロを作ってみました。アドレス帳に「LDAP」という名前にてLDAP
>サーバーが登録されてるという前提でのマクロですけど。

  登録されているLDAPサーバー名称を拾い集める方法は
  ExtAdrBook.txtから抽出するしかないのでしょうか?

[ ]
RE:09085 要望:送信先確認機能No.09086
秀まるお さん 05/03/09 23:28
 
>   登録されているLDAPサーバー名称を拾い集める方法は
>   ExtAdrBook.txtから抽出するしかないのでしょうか?

 そうなると思います。

 マクロでやるとしたら、一度ダミーのエディタを起動してgrep文を実行する形
になりますけど…。必要ならそういうマクロを作りますが…。

[ ]
RE:09086 要望:送信先確認機能No.09087
dszhm さん 05/03/10 08:42
 
>>   登録されているLDAPサーバー名称を拾い集める方法は
>>   ExtAdrBook.txtから抽出するしかないのでしょうか?
>
> そうなると思います。
>
> マクロでやるとしたら、一度ダミーのエディタを起動してgrep文を実行する形
>になりますけど…。必要ならそういうマクロを作りますが…。

  自力で挑戦してみます。
  分からないところがあれば、このフォーラムで質問させていただきます。

[ ]
RE:09087 要望:送信先確認機能No.09088
秀まるお さん 05/03/10 10:15
 
 一応、参考までにマクロ作ってみました。

    loaddll "tkinfo.dll";
    #n = dllfunc("NewMail");
    gofiletop;
    beginsel;
    gofileend;
    delete;
    grep "^G0 \x01", "ExtAdrBook.txt", dllfuncstr("HomeDir")
                , regular, casesense;
    gofiletop;
    searchdown "\x01";
    if( result ) {
        #x = x;
        searchdown "\t", regular;
        $ldap = gettext( #x + 1, y, x, y );
    }
    #handle = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    closehidemaruforced #handle;
    message $ldap;

[ ]
RE:09088 要望:送信先確認機能No.09089
dszhm さん 05/03/10 13:00
 
> 一応、参考までにマクロ作ってみました。
  お忙しいところ、すみません。

>    searchdown "\x01";
>    if( result ) {
>        #x = x;
>        searchdown "\t", regular;
>        $ldap = gettext( #x + 1, y, x, y );
>    }

  複数のLDAPサーバを登録してある場合は、
  y を変更しながら、↑を繰り返せばよろしいですか?

[ ]
RE:09089 要望:送信先確認機能No.09090
秀まるお さん 05/03/10 14:58
 
 繰り返すなら、searchdown "\x01"が成功しつづけるまで、みたいなループを
作らないといけないと思います。

 参考マクロ:

    loaddll "tkinfo.dll";
    #n = dllfunc("NewMail");
    gofiletop;
    beginsel;
    gofileend;
    delete;
    grep "^G0 \x01", "ExtAdrBook.txt", dllfuncstr("HomeDir")
                , regular, casesense;
    gofiletop;
    #count = 0;
    while(1) {
        searchdown "\x01";
        if( !result ) {
            break;
        }
        #x = x;
        searchdown "\t", regular;
        $ldap[#count] = gettext( #x + 1, y, x, y );
        #count = #count + 1;
    }
    #handle = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    closehidemaruforced #handle;
    #i = 0;
    while( #i < #count ) {
        message $ldap[#i];
        #i = #i + 1;
    }

[ ]
RE:09090 要望:送信先確認機能No.09091
dszhm さん 05/03/11 00:49
 
> 繰り返すなら、searchdown "\x01"が成功しつづけるまで、みたいなループを
>作らないといけないと思います。

  動作させながらではないのですが・・・

>    grep "^G0 \x01", "ExtAdrBook.txt", dllfuncstr("HomeDir")
>                , regular, casesense;

  をしているから、全ての行に \x01 があるのでは?
  と思ってしまうのですが・・・
  だから、

>        searchdown "\x01";

  でなくても、
 
  golineend2;
  right;
  golinetop2;

  とかでよいのでは・・と思ったしだいです。

[ ]
RE:09091 要望:送信先確認機能No.09092
秀まるお さん 05/03/11 09:56
 
 僕の作ったマクロはあくまで参考の物でして、後はご自身で好きなように直し
ていただければいいと思います。ただ僕が思ったのは、

 grepの実行結果には、

 ExtAdrBook.txt(nnn):

 のように行番号とファイル名が入るんですけど、行番号は1桁以上の不定な値
になります。そうすると、必ずしも\x01の制御文字が縦一直線に並ぶとは限らな
いです。なので、確実にLDAPサーバー名を探すにはsearchdown文で\x01を探す方
がいいと思いました。

[ ]