|
>そうすると、起動直後の受信間隔は次のようになります。
>
> 1分、1分、1分、1分、1分、3分、3分、3分、3分、3分、10分...
>
>起動してから5分間は高頻度に、起動してから20分間は中頻度に、それ以降は
>低頻度にと状態に応じてその頻度(間隔)が変わります。そして、途中でメールを
>1通でも送信したり受信したら、それまでの間隔をリセットします。起動してから
>12分後にメールを送信し、その2分後にメールを受信した場合は次のようになり
>ます。
>
> 1分、1分、1分、1分、1分、3分、3分、3分(ここでメール送信)
> (ここから間隔がリセット)
> 1分、1分(ここでメール受信)
> (ここから間隔がリセット)
> 1分、1分、1分、1分、1分、3分、3分、3分、3分、3分、10分...
>
>状態の数をいくつにするかとか、何回(もしくは時間)経過したら状態が変わる
>とかの細かいことは例に過ぎません。もっとうまい方法があるかもしれません。
>ポイントは、実際にメールを受け取る間隔には波があって、その波にうまく乗れる
>ような定期受信の仕組みがあるといいなと思っていることです。
>
>いかがでしょうか?
複雑なことをしたい場合マクロを利用することをお勧めします。
動作確認はしてませんが、以下のように定期受信の頻度を変えればよいのでは?
定期受信の設定を1分間隔にしておいて、頻度を3にすれば3分毎
頻度を10にすれば10分毎の受信に切り替わると言うぐあいに。
例)秀丸メール起動時のマクロ
loaddll "TKInfo.dll";
createreg "CURRENTUSER", "Software\\Hidemacro\\mail";
/* 開始時刻を記録 */
writeregnum "Count", tickcount;
closereg "CURRENTUSER", "Software\\Hidemacro\\mail";
例)受信が一段落した時のマクロ
loaddll "TKInfo.dll";
#rcnt = dllfunc( "RecvMailCount" );
openreg "CURRENTUSER", "Software\\Hidemacro\\mail";
if(#rcnt > 0){
/* 1通でも受信したら時刻をリセット */
#millisec = tickcount;
writeregnum "Count", #millisec;
} else {
/* 受信してない場合は最後の時刻 */
#millisec = getregnum( "Count" );
}
closereg "CURRENTUSER", "Software\\Hidemacro\\mail";
/* 経過時間を確認 */
if( #millisec <= 300000 ){
/* 5分以内の場合、毎回受信設定 */
#n = dllfunc("LoadAccountProp", "テストアカウント" );
#n = dllfunc("GetAccountProp", "nAutoDownInterval", 1);
#n = dllfunc("SaveAccountProp");
}
if( #millisec > 300000 ){
/* 5分超えたら3回に一回 */
#n = dllfunc("LoadAccountProp", "テストアカウント" );
#n = dllfunc("GetAccountProp", "nAutoDownInterval", 3);
#n = dllfunc("SaveAccountProp");
}
if( #millisec > 1200000 ){
/* 20分超えたら10回に一回 */
#n = dllfunc("LoadAccountProp", "テストアカウント" );
#n = dllfunc("GetAccountProp", "nAutoDownInterval", 10);
#n = dllfunc("SaveAccountProp");
}
例)あとで送信/今すぐ送信時のマクロ
loaddll "TKInfo.dll";
/* 送信操作をしたら時刻をリセット */
openreg "CURRENTUSER", "Software\\Hidemacro\\mail";
writeregnum "Count", tickcount;
closereg "CURRENTUSER", "Software\\Hidemacro\\mail";
|
|