- 1 名前:名無しさん@お腹いっぱい。 [2007/01/19(金) 12:20:12 ID:RA7zjXS70]
- Windows および Windows CE で動作するメーラー。
開発は QMAIL2 から QMAIL3 へ移行。 設定などややこしい部分もあるのでドキュメントは必ず熟読すべし。 質問はそれからのほうがスムーズです…作者メモやMLログも参考にしてください。 QMAIL3は MTA の qmail とは関係ありません。 ■QMAIL3公式 q3.snak.org/wiki/ ■作者メモ snak.tdiary.net/ ■バグ報告 q3.snak.org/bts/guest.cgi?project=Q3&action=top ■コメントはこちら www.lingr.com/room/bJETSwHp1e5 ■前スレ part2 pc9.2ch.net/test/read.cgi/software/1154863783/ part1 pc7.2ch.net/test/read.cgi/software/1037582559/ ※関連情報は>>2-10あたりを参考。
- 367 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:28:45 ID:RPVfs0TI0]
- >363がようやく完成。hyperqm.exeをJScriptに移植した。
自分で使い慣れた検索式に変えるのに便利そうなんでさらしておきます。 hyperqm.jsというファイル名で以下保存-------- // - hyperqm.exeをちょっぴり使いやすくするツール - // hyperqm.exe(freemind.s57.xrea.com/index.html)のソースをJScriptに移植したもの。 // hyperqm.exeと同じフォルダにhyperqm.jsというファイル名でソースを保存して使ってください。 // QMAIL3検索オプションでカスタムにして検索のところを「cscript hyperqm.js "$index" "$condition" $encoding」とする。 // 検索式もhyperqm.exeと同じでそれに加えて下記が可能。 // 1) 属性のOR:「from,cc:hoge,foo」とすれば「hoge」または「foo」が「fromまたはcc」にあるメールを検索。 // →「"from,cc:hoge foo"」と「"」で括って検索対象を「半角空白」で区切っても可。 // 2) 属性の否定:「hoge -from:foo」とすれば、本文に「hoge」を含み「from」が「foo」を含まないメールを検索。
- 368 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:29:26 ID:RPVfs0TI0]
- >>367の続き
---以下続き--- main(); function main(){ var WshShell, ARGV, index, char_code, attr_str, search_phrase, objExecl, parser; var WshShell = new ActiveXObject('WScript.Shell'); ARGV = WScript.Arguments; index = ARGV(0); char_code = ARGV(2); var parser = new StringParser(ARGV(1)); attr_str = parser.attr_str; search_phrase = parser.search_phrase; var objExec = WshShell.Exec('estcmd search -nl -ic ' + char_code + ' -vu -aux 99 -max -1' + attr_str + ' "' + index + '" "' + search_phrase + '"'); while(!objExec.StdOut.AtEndOfStream) { WScript.StdOut.WriteLine(objExec.StdOut.ReadLine()); } }
- 369 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:30:26 ID:RPVfs0TI0]
- >>368の続き
---以下続き--- function StringParser(arg){ var inputted_str, search_phrase; inputted_str = arg search_phrase = ''; var attribute_condition_ary = new Array(); var r, str; while(r=inputted_str.match(/\"(.*?)\"/)){ str = inputted_str.slice(r.index + 1, r.lastIndex - 1); if(str.indexOf(':') != -1){ attribute_condition_ary.push(attribute(str)); }else{ if(search_phrase.length > 0){ search_phrase += ' AND '; } search_phrase += str; } inputted_str = inputted_str.slice(0,r.index) + inputted_str.slice(r.lastIndex); }
- 370 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:31:23 ID:RPVfs0TI0]
- >>369の続き
---以下続き--- var strs, key; strs = inputted_str.split(/ | /); for(key in strs){ str = strs[key]; if(!str){continue;} if(str.indexOf(':') != -1){ attribute_condition_ary.push(attribute(str)); continue; } if(search_phrase.length > 0){ if(str == 'OR'){ search_phrase += ' OR'; continue; }else if(search_phrase.match(/.+ OR$/)){ search_phrase += ' '; }else if(str.charAt(0) == '-'){ search_phrase += ' ANDNOT '; str = str.slice(1); }else{ search_phrase += ' AND '; } } search_phrase += str; }
- 371 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:32:04 ID:RPVfs0TI0]
- >>370の続き
---以下続く--- if(search_phrase.length == 0){ search_phrase = '[UVSET]'; } var attr_str; attr_str = ''; if(attribute_condition_ary && attribute_condition_ary.length > 0){ for(key in attribute_condition_ary){ attr_str += ' -attr "' + attribute_condition_ary[key] + '"'; } } this.source = arg; this.attr_str = attr_str; this.search_phrase = search_phrase; }
- 372 名前:名無しさん@お腹いっぱい。 mailto:sage [2007/04/29(日) 13:32:57 ID:RPVfs0TI0]
- >>371の続き
---以下続く--- function attribute(str){ var str_ary; str_ary = str.split(':'); if(!str_ary){return} if(str_ary[0] == 'after'){ return "@cdate NUMGE " + Math.round(Date.parse(str_ary[1])/1000); }else if(str_ary[0] == 'before'){ return "@cdate NUMLT " + (Math.round(Date.parse(str_ary[1])/1000) + 60*60*24); }else if(str_ary[1].match(/,| |\|/)){ return str_ary[0] + " ISTRRX " + str_ary[1].replace(/,| |\|/g,'|'); }else if(str_ary[0].charAt(0) == '-'){ return str_ary[0].slice(1) + " !ISTRINC " + str_ary[1]; }else{ return str_ary[0] + " ISTRINC " + str_ary[1]; } } ---上記で終わり---
|

|