受信したメール本文の文字列を取得する方No.34374
hajimett さん 08/07/07 12:41
 
いつも便利に使わせていただいております
このたびは、マクロについて御指南頂きたく。

すなわち、
受信したメール本文の文字列を取得する方法
はありますでしょうか。

理想的には、引用符号として頻出する「>」が先頭文字列の場合や
「----- Original Message ----- 」以下の部分は除外できれば
なお嬉しいのです。

やりたい作業は、こちらから投げたメールへの返信として、
複数の差出人が記載した内容を一挙に取得することです。
もちろん、whileによる繰り返しで最終的に取得できれば
いいので、一挙にとは、マクロの動作後の状況を意味しています。

ご助言いただければ幸いです。

[ ]
RE:34374 受信したメール本文の文字列を取No.34375
秀まるお2 さん 08/07/07 13:40
 
 受信したメールすべてをスキャンして何かマクロで処理したいということであ
れば、SelectRecvMail関数またはSelectRecvMailInFolder関数を使うことになり
ます。

 それを使ってループさせると受信したメール1つ1つを選択する動作が実現で
きます。

 メール本文は、普通に秀丸エディタでテキストデータを参照するのとまったく
同じ手段で取得できますが、コツとしては、メール本文の先頭のy座標が0になる
という所だけです。なので、例えば本文の先頭行を取得したければ、

   $s = gettext( 0, 0, 999, 0 );

 みたいな方法で取得出来ます。

 うちのホームページのライブラリにアップロードされているマクロをいろいろ
ダウンロードして中身でどんなことをしているのかを参考にするのがいいんじゃ
ないかと思います。

[ ]
RE:34375 受信したメール本文の文字列を取No.34376
hajimett さん 08/07/07 15:23
 
早速コメントありがとうございます
> 受信したメールすべてをスキャンして何かマクロで処理したいということ
ですが、むしろ特定のメール(たとえば、選択した複数のメール)の、
です。

> メール本文は、普通に秀丸エディタでテキストデータを参照するのとまったく
>同じ手段で取得できますが、コツとしては、メール本文の先頭のy座標が0になる
>という所だけです。なので、例えば本文の先頭行を取得したければ、
>
>   $s = gettext( 0, 0, 999, 0 );
>
> みたいな方法で取得出来ます。

参考にさせていただきます。

> うちのホームページのライブラリにアップロードされているマクロをいろいろ
>ダウンロードして中身でどんなことをしているのかを参考にするのがいいんじゃ
>ないかと思います。

gettextをキーワードに検索してみます。

[ ]
RE:34376 受信したメール本文の文字列を取No.34378
山紫水明 さん 08/07/07 20:52
 
 hajimettさん,

 以下のようなマクロではいかがでしょう。
 目的のメールを選択して実行してみてください。
//---------------------------------------------------------//
loaddll "TKInfo.dll";
#i = 0;
#n = dllfunc("DisableDraw",0);
setclipboard "";
#n = dllfunc("LockSelection");
while( 1 ) {
    #n = dllfunc("EnumSelection", 1);
    if( #n == 0 ) break;
    #i = #i + 1;
    #n = dllfunc( "SelectPane", 2);
    gofiletop;
    beginsel;
    gofileend;
    appendcopy;
    addclipboard "━━━━━━━━━━━━━━━━━━━━\n";//区切り線
    #n = dllfunc( "SetMainWndTop" );
    #n = dllfunc( "SelectPane", 1);
}
#n = dllfunc("UnlockSelection", 0);
#n = dllfunc("EnableDraw");
newfile;
#n = dllfunc("SwitchHeaderView", 0);
selectall;
delete;
paste;
replaceallfast "^>.*\\n", "", regular;
endmacro;
//---------------------------------------------------------//

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:34378 受信したメール本文の文字列を取No.34379
hajimett さん 08/07/07 22:41
 
山紫水明さま
大変ありがとうございました 感激しています

マクロの意味を少しずつ読み解いていって居るところですが、
#iについて、これは最終的には、作業したメールの数になるのかと
思いますが、検証用の変数と理解して良いでしょうか。

    #n = dllfunc("EnumSelection", 1);
でwhileを回している中で、

    #n = dllfunc( "SelectPane", 2);

    #n = dllfunc( "SetMainWndTop" );
    #n = dllfunc( "SelectPane", 1);

と窓を軽やかに移動しながら処理していくというのが、
「コツ」でしょうか。勉強になりました。

[ ]
RE:34379 受信したメール本文の文字列を取No.34384
山紫水明 さん 08/07/08 20:37
 
 hajimettさん,

>#iについて、これは最終的には、作業したメールの数になるのかと
>思いますが、検証用の変数と理解して良いでしょうか。

 メールの数とか,それぞれに番号をふるとか,使い道があると思っていたので
すが,結果的には不要でした。
 消し忘れたというのが正直なところです。最後に
message str(#i) + " 個のメールをまとめました。";
と追加することもできますが。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]