Dropboxのちょっと変わった使い方(メール取得)
※本ブログは6月末で他サイトに移設する予定です。これまで閲覧ありがとうございました。
HDDドライブの使用量をモニタする方法を例として、Dropboxを利用したリモートPCの操作について示したが、ここでは、リモートPCでメールサーバ(受信)にアクセスしてタイトルをリストアップしておき、(手元にある)ローカルPC(またはモバイルデバイス)でその内容を確認する方法について具体例を示す。
準備するものは3つ。
HDDドライブの使用量をモニタする方法を例として、Dropboxを利用したリモートPCの操作について示したが、ここでは、リモートPCでメールサーバ(受信)にアクセスしてタイトルをリストアップしておき、(手元にある)ローカルPC(またはモバイルデバイス)でその内容を確認する方法について具体例を示す。
- Dropbox内のファイル群
- メール取得スクリプト(PHP)。PHP環境のインストールがインストールされていることを前提としている
- タスク登録
メールタイトル等を取得するPHPスクリプト例
---- <?php /* subchk.php : a PHP script for checking subject from an email account PHPの版数は5.2.5以上を想定 */ //------------------------------------------------------------------------------ // 初期設定 mb_internal_encoding("SJIS"); //------------------------------------------------------------------------------ /* POP3 サーバと接続 */ $mbox = @imap_open("{"."POP3サーバアドレス".":110/pop3}INBOX","POP3アカウント名","POP3パスワード"); if ($mbox) { /* 新着確認 */ $mboxes = imap_check($mbox); $mail_cnt = $mboxes->Nmsgs; echo "$mail_cnt 件あります\n"; /* 1通以上あれば */ if ($mail_cnt > 0){ /* 各メールのリストを作成 */ for ($i = $mail_cnt; $i > 0; $i--){ echo "$i]"; $head = imap_header($mbox, $i); echo mb_decode_mimeheader($head->subject)."\n"; echo $head->date."\n"; echo mb_decode_mimeheader($head->fromaddress)."\n\n"; } } imap_close($mbox); exit(0); }else{ /* 認証の失敗 */ print("Unable to validate username/password.\n"); exit(1); } ?> ----
メール取得スクリプト(PHP)の更新と保存場所
上記スクリプトをエディタに取り込んでPOP3サーバアドレス、POP3アカウント名、POP3パスワードを自分のメール環境に合わせて変更する。 変更後のスクリプトファイルを例えばsubchk.phpというファイル名にして、Dropbox外の適当な場所に保存する。処理内容(スクリプトコード)を固定して使うこと、アカウント名やパスワードを入れていることからDropboxフォルダの外に保存すべきだ。ここでは、Cドライブ直下に"Bin"というフォルダを作成してその下に保存する。 PHPはリモートPCのみにインストールすればよい。ここではCドライブの直下に”Php”というフォルダを作成してそこにインストールした。環境変数(PATH)は設定してもしなくてもよい。Dropbox内のファイル群の構成例
管理しやすくするため、リモート操作専用のフォルダ(例えば”CmdViaDropbox”)を作成しDropbox直下に置き、そこに
- Batchファイル(bat\subchk.bat)。Batchファイルはそうたびたび更新することがないだろうから”bat”フォルダに集めておく。iPad等からの操作時にlockファイルを削除することがあるが、間違えてBatchファイルを消さないようにする対策にもなる
- 結果出力ファイル(rep_subchk.txt)
- Lockファイル(subchk.lck)
Batchフォルダ内のファイル構成例
Windowsタスクから直接起動されるBatchファイル(Main.bat)の作成例
---- @echo off REM call bat\RemotePC.bat call bat\Subchk.bat REM call bat\Subedit.bat REM pause exit ----
メール取得Batchファイル(Subchk.bat)の作成例
---- @echo off if exist Subchk.lck goto END echo "CmdViaDropbox" > Subchk.lck cd c:\bin C:\php\php.exe -f subchk.php > "C:\Documents and Settings\user\My Documents\Dropbox\CmdViaDropbox\rep_subchk.txt" REM pause REM exit :END ----これはBatchファイル(MAIN)から起動されるメール取得Batchファイル(Subchk.bat)の作成例である。
起動方法と結果例
手元のデバイス(ローカルPCやiPad、iPhoneなど)のDropboxフォルダを開き(iPadならDropboxアプリを起動)、 CmdViaDropbox\subchk.lck というLockファイルを削除する(iPadのDropboxはファイル編集はできないがファイル削除はできる)。 するとLockファイル削除からタスクの設定時間(ここでは5分毎にMain.batが処理されるようタスク登録されたと仮定)が経過したところで、Main.batを経由してSubchk.batが呼ばれる。Lockファイルが存在しないのでPHPスクリプトのコードが処理されてメールサーバ(POP3)から抽出したタイトルリストが結果ファイル(rep_subchk.txt)に出力される。 タイトルリストの数にもよるが1分から長くて数分で処理が完了するだろうから、上の仮定でいけば6分から8分後には最新のタイトルリストが手元のデバイスで参照できる。なお、Dropboxの同期時間は0として計算していることに注意。回線が細いと当然無視できない時間がかかるだろう 以下は結果ファイルの例---- 65 件あります 65]グーグル参入で活気づく「クラウドストレージ」市場 Tue, 08 May 2012 15:36:36 +0900 ccc@dddddd.com 64]4つの実践演習でチームをまとめるスキルを体得●【リーダー養成プログラム】 Tue, 08 May 2012 15:32:02 +0900 ccc@dddddd.com 63]月間トップはスルガ銀と「SEは正しい」/ITproスマホサイト刷新 Tue, 08 May 2012 15:24:02 +0900 ccc@dddddd.com ----
応用
PhpスクリプトやWindowsアプリを用意してそれらを呼び出すBatchファイルをMain.batに追加するとリモートPCにやらせたいことを拡張できる。 上の例では(ここではコメント(REM)になっているが)- リモートPC側からVNCを呼び出す(RemotePC.bat)。VNCアプリと組み合わせて処理する
- メールの本文をリストアップする(subedit.bat)。Phpスクリプトと組み合わせて処理する