報告:自動返信マクロ出来ましたNo.00429
JR0LPL さん 07/07/18 08:47
 
みなさま、こんにちは。JR0LPLです。

みなさまの暖かいアドバイスのお陰で、無事、自動返信マクロが「一応」完成し
ました。ありがとうございます。

後は運用しながら、改良していきたいと思います。以下のようなiniファイル形
式にしました。

[Addr]
Addr1=****1@****.ne.jp
Addr2=****1@****.ne.jp
Addr3=****1@****.ne.jp
Addr4=****1@****.ne.jp
Addr5=****1@****.ne.jp
Addr6=end

完成したマクロは以下です。お気づきの点がありましたら、ご指摘頂けると幸い
です。

//---------------------------------------------------------
// 受信毎にマクロ起動するので、$Flag でマクロ起動を制御する
//---------------------------------------------------------

// $Flag = "";
   $Flag = "自動送信ON";

if ( $Flag == "" ) endmacro;

//---------------------------------------------------------
//                getinistr 関数用の設定
//---------------------------------------------------------

$Dir  = "E:\\TuruKameData\\AutoReplay\\";
$ini  = $Dir + "Addr.ini";
$Sec2 = "Addr";

//----------------------------------------------------------
//             自動返信メール生成用の設定
//----------------------------------------------------------
//ここを書き換える事で、Subroutine内の$Subject+".txt"を読み
//込む
//----------------------------------------------------------

$Subject = "外出中です";
//$Subject = "睡眠中です";
//$Subjecy = "来客中です";
//$Subject = "食事中です";
//$Subject = "離席中です";
//$Subject = "通院中です";

//----------------------------------------------------------
//                     メインルーチン
//----------------------------------------------------------

loaddll "tkinfo.dll";

$From = ""; // 安全の為入れておく

while( dllfunc( "SelectRecvMail" ) ) {
    $From = dllfuncstr( "CurrentHeader" , "From");
}

if ( $From == "" ) endmacro;

$From = dllfuncstr( "SetEmailOnly" , $From );

#a = 1;
while( #a < 101 ) {
    $Sec3 = "Addr" + str( #a ); // Addr1〜Addr100 までの文字列を生成
    $a = getinistr( $ini, $Sec2, $Sec3 );
    if ( $a == $From ) call SendMail;
    if ( $a == "end" ) break;
    #a = #a + 1;
}

exit;

//----------------------------------------------------------------
//                         サブルーチン
//----------------------------------------------------------------
// 指定したFrom:が有った場合、文面及び Subject をセットして送信
//----------------------------------------------------------------

SendMail:

  #n = dllfunc( "SetQuietMode" , 1 );
  #n = dllfunc( "MakeReply" );
  #n = dllfunc( "SetHeader" , "Subject" , $Subject);
  gofiletop;
  beginsel;
  gofileend;
  delete;
  insertfile $Dir+$Subject+".txt";
  #n = dllfunc("SendNow");
  #n = dllfunc( "SetQuietMode" , 0 );
return;

[ ]
RE:00429 報告:自動返信マクロ出来ましたNo.00443
davinci1958 さん 07/07/18 21:53
 

2007/07/18(水) 21:49:20

こんにちは、JR0LPLさん

ダヴィンチ@ユーザーです。

細かい事ですがメインルーチンの終了は、
        exit;
よりも
        freedll;
        endmacro;
・・・にした方が一般的です。但し、マクロの最後でfreedll;する必要はないと
   マクロヘルプには書かれています。

/*
** タイトル:『turukame.2:00429| 報告:自動返信マクロ出来ました』
** 発信日:2007年07月18日(水) 08:47:09
** 発信者:JR0LPLさん
*/
>みなさま、こんにちは。JR0LPLです。
>
>みなさまの暖かいアドバイスのお陰で、無事、自動返信マクロが「一応」完成し
>ました。ありがとうございます。
>
>後は運用しながら、改良していきたいと思います。以下のようなiniファイル形
>式にしました。
>
>[Addr]
>Addr1=****1@****.ne.jp
>Addr2=****1@****.ne.jp
>Addr3=****1@****.ne.jp
>Addr4=****1@****.ne.jp
>Addr5=****1@****.ne.jp
>Addr6=end
>
>完成したマクロは以下です。お気づきの点がありましたら、ご指摘頂けると幸い
>です。
>
>//---------------------------------------------------------
>// 受信毎にマクロ起動するので、$Flag でマクロ起動を制御する
>//---------------------------------------------------------
>
>// $Flag = "";
>   $Flag = "自動送信ON";
>
>if ( $Flag == "" ) endmacro;
>
>//---------------------------------------------------------
>//                getinistr 関数用の設定
>//---------------------------------------------------------
>
>$Dir  = "E:\\TuruKameData\\AutoReplay\\";
>$ini  = $Dir + "Addr.ini";
>$Sec2 = "Addr";
>
>//----------------------------------------------------------
>//             自動返信メール生成用の設定
>//----------------------------------------------------------
>//ここを書き換える事で、Subroutine内の$Subject+".txt"を読み
>//込む
>//----------------------------------------------------------
>
>$Subject = "外出中です";
>//$Subject = "睡眠中です";
>//$Subjecy = "来客中です";
>//$Subject = "食事中です";
>//$Subject = "離席中です";
>//$Subject = "通院中です";
>
>//----------------------------------------------------------
>//                     メインルーチン
>//----------------------------------------------------------
>
>loaddll "tkinfo.dll";
>
>$From = ""; // 安全の為入れておく
>
>while( dllfunc( "SelectRecvMail" ) ) {
>    $From = dllfuncstr( "CurrentHeader" , "From");
>}
>
>if ( $From == "" ) endmacro;
>
>$From = dllfuncstr( "SetEmailOnly" , $From );
>
>#a = 1;
>while( #a < 101 ) {
>    $Sec3 = "Addr" + str( #a ); // Addr1〜Addr100 までの文字列を生成
>    $a = getinistr( $ini, $Sec2, $Sec3 );
>    if ( $a == $From ) call SendMail;
>    if ( $a == "end" ) break;
>    #a = #a + 1;
>}
>
>exit;
>
>//----------------------------------------------------------------
>//                         サブルーチン
>//----------------------------------------------------------------
>// 指定したFrom:が有った場合、文面及び Subject をセットして送信
>//----------------------------------------------------------------
>
>SendMail:
>
>  #n = dllfunc( "SetQuietMode" , 1 );
>  #n = dllfunc( "MakeReply" );
>  #n = dllfunc( "SetHeader" , "Subject" , $Subject);
>  gofiletop;
>  beginsel;
>  gofileend;
>  delete;
>  insertfile $Dir+$Subject+".txt";
>  #n = dllfunc("SendNow");
>  #n = dllfunc( "SetQuietMode" , 0 );
>return;

--
メーラー: HidemaruMail 4.81beta1 (WinNT,500)
OS: Windows2000 SP4

[ ]
RE:00443 報告:自動返信マクロ出来ましたNo.00446
JR0LPL さん 07/07/19 02:01
 
ダヴィンチさん、こんにちは。JR0LPLです。

ご指摘ありがとうございます。SendNow を使った後、開いたエディタ
画面を閉じる処理を手抜きして exit; で終わらせたのですが、今は
SendNow の直後にマクロでエディタ画面を閉じる処理に変更してます
ので、マクロの終わりは endmacro; で終了するように改良しており
ます。freedll; に関しましては、ダヴィンチさんがおっしゃるよう
に、マクロヘルプに不要と書かれていましたので、手抜きして記述し
ていませんが(^^ゞ

ご指摘、ありがとうございました。

ダヴィンチさん以外にも、いろいろな方にここの会議室で援助頂きま
して、本当に助かりました。改めて御礼を申し上げます。

[ ]