2010-04-19
SMAILを使ってX-Finder上からファイルをGmailにバックアップ
自分のGmailアカウントに添付ファイルとしてファイルを送りつけておくのは、ちょっとしたファイルのちょっとしたバックアップには最適。
fenrirからGmailにファイル添付して送信する方法については、ダイアリーの方で書いたことがあるが、ファイルを扱うんだからファイラーからやった方がいいと思い、X-Finderの右クリックからできるようにした。
SMAILの準備
まず、SMAILというコマンドライン型メール送信ソフトをインストール。適当なところに展開するだけのレジストリ不使用ソフト。
smail.exeを実行してサーバ等の設定。
- SMTPポート番号:25
- SMTP認証:AUTH PLAIN
- SMTPユーザID:GmailアカウントID(@の左側のみ)
- SMTPパスワード:Gmailのパスワード(設定保存後に暗号化される)
- SMTP/SSL暗号化:チェックを入れる
- ポート番号:465
X-Finderの設定
X-Finderのビルトインコマンドだけでもできることはできるんだけど、ビルトインコマンドだと、選択ファイルが複数の場合にパスが半角スペース区切りになってしまってSMAILの書式に合わない。つまり添付できるファイルが1個に限定される。
なので、X-Finderの最新(人柱)版で実装されたスクリプト機能を使って、選択ファイルの列挙をカンマ区切りにする。
以下、ランチャの「パス」欄の内容。
Script:JScript Sel = WScript.Col(WScript.Env('Selected')); Arr = new Array(); for (i = 0; i < Sel.Count; i++) { Arr.push('"' + Sel.Item(i) + '"'); } WScript.Env('Att', Arr.join(',')); WScript.Env('Num', Arr.length); Input = WScript.Exec('Input:"Gmailにバックアップ","選択中の%Num%個のファイルをGmailにバックアップします。","メールの件名を入力して下さい","[Backup]%FocusedName%"'); if (Input) { WScript.Exec('SW:0:%X-Finder%..\\smail\\smail.exe -hsmtp.gmail.com -fuser@gmail.com user@gmail.com -s"%InputData%" -a%Att%'); }
動作は実行。user@gmail.comは自分のGmailアドレスに書き換える。
スクリプトは素人なので、for文でコレクションに格納したパス群を配列に入れ直し、カンマ区切りで結合するという遠回りをしている。もっとうまくできそうだけど分からないのでやらない。
送信前に件名入力ダイアログを表示する。その時のデフォルトは"[Backup]フォーカス中のファイル名"にした。問題なのは、ここで入力をキャンセルしてもメール送信自体はストップしないこと。X-Finderのビルトインコマンドだけならキャンセルされるんだけど、ここではJScriptの中で使ってるのでそうならない。しかもJScriptにはこういう入力ダイアログを出す機能が無いらしい。X-Finder11-6-44からWScript.Exec内でのInput:にtrue/falseが返るようになったので、合わせて修正。
ちなみに、SW:0:でプロンプト画面を表示しないから、送信に失敗してても分からない。
他にもGmailのサイズ上限である25MBを超える場合は警告を出すとか、添付すると弾かれる拡張子(exeやzip)を含む場合に通知するとか、やろうと思えば色々できる。面倒だし必要ないからやらないけど。