スケジュールでの受信No.00477
KXC さん 16/09/26 09:25
 
秀丸メールにて定期受信の機能はありますが、例えば毎日23時に受信を行うといった
設定はできないでしょうか。
アカウント数が多く定期受信を行うとホスティング側のPOPセッション数を超えてし
まい、クライアント側メーラーで受信ができなくなってしまします。

[ ]
RE:00477 スケジュールでの受信No.00478
秀まるお2 さん 16/09/26 10:34
 
 やり方は2種類あると思います。

 1つは、Windowsのタスクスケジューラーを使って23時に秀丸メールにマクロ
実行させて、そのマクロで受信を実行する方法。

 もう1つは、自動実行マクロの「送受信の開始直前」についてマクロを割り当
てておいて、そのマクロで、23時以外の定期受信を抑止する方法。

 前者は、その時間帯に秀丸メールで何か作業中だと受信されない可能性があり
ます。

 後者は、23時に秀丸メールが起動してないと受信が実行されないので、例えば
無人で実行したい場合に、帰宅前に秀丸メールを起動しておくのを忘れると受信
されないって問題があります。

■タスクスケジューラを使う方法

 マクロとして、

    loaddlll "tkinfo.dll";
    #n = dllfunc("StartTransmitAll");

 のような2行だけのマクロを、例えば「StartTransmitAll.mac」ってファイル
で保存しておきます。

 そして、タスクスケジューラーの方に、

   "C:\Program files\HidemaruMail\TuruKame.exe" /x StartTransmitAll.mac

 みたいなマクロ実行する用のコマンドラインを登録しておけばいいです。そう
するとその時間に秀丸メールが起動してマクロ実行されます。

 秀丸メールがすでに起動してる場合でもうまくマクロ実行されますが、すでに
起動されてる秀丸メール上で何か作業中だった場合、例えば何かダイアログボッ
クスを表示してる最中だとか、メールをドラッグドロップしてる最中だったりす
ると、マクロ実行に失敗してエラーメッセージが出たまま止まることになります。

■定期受信の場合

 マクロは、例えばこんな感じでいいと思います。

 message "test.mac";
    loaddll "tkinfo.dll";
    message str(dllfunc("GetTransmitCommandCode"));
    if( dllfunc("GetTransmitCommandCode") != 1 ) {
        //定期受信でなければ終了
        endmacro;
    }
    if( leftstr( time, 2 ) == "23" ) {
        $ini = macrodir + "\\TransmitAll23.ini";
        $prev = getinistr( $ini, "Date", "Date" );
        $now = date;
        if( $prev != $now ) {
            //受信実行
            writeinistr $ini, "Date", "Date", $now;
            endmacro;
        }
    }
    #n = dllfunc("SetCancel", 1);   //定期受信させない
    endmacro;

 これを「マクロ・マクロ登録...」の「自動起動」ページの「送受信の開始直
前」に登録しておけばいいです。そして、定期受信の間隔を1時間以内の、出来
たら20分に1回以下程度にセットしておくのがお勧めです。

[ ]
RE:00478 スケジュールでの受信No.00479
秀まるお2 さん 16/09/26 10:56
 
 定期受信用のマクロですが、余計なmessage文が混じってしまいました。(動
作確認用に入れたのがそのまま残ってしまった)

 余計なmessage文は削除して使ってください。

[ ]