Willcom03 の駄目メーラーに引導を渡すことが出来ました。
製品の大幅な改善に寄与でき、一技術者として感無量です。
メーラーをW-Zero3から QMAIL3 に置き換えます。
また、送受信したメールをPCでも受信できるようにします。
その他、QMAIL3の設定についても記述しました。
メールの自動受信に使われる ttmail.exe には、以下の問題があります。
本ページでは、これらの問題に対処します。
メール自動受信の処理は、ステータスと呼ばれるレジストリ値に関連しています(参考:「Zero3をちょい研究!ブログ」「楽園オーバードライブ」)
よって上記のレジストリを監視し、値が 1 や 5 となったときにメールを受信させれば ttmail を置き換えることが可能です。
なお蛇足ですが、旧機種のステータスレジストリを間違って作ってしまうと ttmail.exe はこちらを見てしまいますので、自動メール受信が全くできなくなります。
「カコン」という音はステータスのレジストリ値を戻すタイミングで鳴るため、その前後にマナーモード制御処理を入れてやります。
ちなみに ttmail.ini の設定で ResetStatus15=1 とするとレジストリ値を -1 に戻してからプログラムを動かすため、消音出来ません。受信後にレジストリ値を戻すことも出来そうですが、未確認です。
ttmailは使わず、ssipa 氏謹製の cmdRegistryNotifyAppと、cmdRegistryNotifyAppを使いやすくするMortScript を使います。このソフトは、レジストリの値が変更されたときに指定されたプログラムを実行するよう OS に登録します。
実際に実行する内容は以下の通り。これを MortScript で記述します。
レジストリの値を変えることでマナーモード制御が出来るという記述もありますが、実際に試したところ動作しなかったので SetManner.exe を使いました。
それぞれ、\Program Files\qmail3-add\recvmail.mscr と \Program Files\cmdRegistryNotifyApp に置く設計となっています。
他に必要なソフトは以下の通り。
メール受信がエラーとなった場合に、再度受信をさせる方法をどうするか。
これが出来ないと地下鉄とかで鬱陶しいんですよね。
他にもさまざまなイベントをレジストリ経由で拾えますので、結構遊べそうですよ。
たとえば、HKEY_LOCAL_MACHINE\System\State\Connections\Count の値が 1 以上なら何らかの手段でネットにつながっているとか。
Status 検知から受信、未読数管理までの流れはいくつかの選択肢がありますので、簡単に纏めてみました。DearQmail3(fetchQmail)については未調査です。
自動/手動受信のどちらでも未読数管理が出来ること、MortScriptで動作を自由に記述できること、
常駐しないことの三点が決め手となったので qmail3helper を選択しました。
バイブとマナーモード検知を togglebtpan から、LEDや未読数のレジストリ処理をrunq3uから取ってきてサンコイチにします。
qmail3helper 改造版をダウンロード
メール未読数を0にするスクリプトを追加しています。
アカウント作成時にメッセージボックスを「1ファイル」、ブロックサイズをメール/インデックス共に1MBにします。
いったん QMAIL3 を終了させたら今度はaccount.xmlをエディタでひらき、Globalセクションに
<key name="IndexMaxSize">1</key>という1行を加えることで、インデックスファイルを1つに制限します。
その他の設定については、2008-12-02の日記を参照ください。