Dropboxのちょっと変わった使い方(メール取得)

HDDドライブの使用量をモニタする方法を例として、Dropboxを利用したリモートPCの操作について示しましたが、ここでは、リモートPCでメールサーバ(受信)にアクセスしてタイトルをリストアップしておき、(手元にある)ローカルPC(またはモバイルデバイス)でその内容を確認する方法について具体例を示します。

準備するものは3つになります。

  1. Dropbox内のファイル群
  2. メール取得スクリプト(PHP)。PHP環境のインストールがインストールされていることを前提としている
  3. タスク登録

メールタイトル等を取得する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内のファイル群の構成例

dropboxCmdViaDropbox

管理しやすくするため、リモート操作専用のフォルダ(例えば”CmdViaDropbox”)を作成しDropbox直下に置き、そこに

  • Batchファイル(bat\subchk.bat)。Batchファイルはそうたびたび更新することがないでしょうから、”bat”フォルダに集めておく。iPad等からの操作時にlockファイルを削除することがありますが、間違えてBatchファイルを消さないようにする対策にもなるからです
  • 結果出力ファイル(rep_subchk.txt)
  • Lockファイル(subchk.lck)

等を入れておくきます

Batchフォルダ内のファイル構成例

dropbox_CmdViaDropbox_bat

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スクリプトと組み合わせて処理する

などが実装できます。

関連する記事

Dropboxのちょっと変わった使い方(基本編)
Dropboxのちょっと変わった使い方(メール取得)

お世話になったリンク

Dropbox

以上です