送信先メールアドレスの@より左側がカテゴリになる。(例 “foo@exmaple.com”ならfooがカテゴリ名になる)
件名がTODOの内容になる。件名の最初に数字+スペースを入れると、その数字が優先度になる。(例 “5 ミルクを買う”)
サーバ側ではコマンドラインからこのPHPを起動して、パラメータとしてメールのファイルパスを渡す。
LinuxならqmailやPostfixからパイプで渡す。
WindowsならXMailが簡単。Java使いならApache Jamesで頑張る?
<?php
/**
* @version 0.1.1
*/
require('Todo.php');
require('MailMan.php');
//メールのファイルを取得
$path = $argv[1]; //php実行のパラメータとして渡される
//メールを解析
mb_internal_encoding(Todo::ENCODING);
$mail = MailMan::file2mail($path);
$to = explode('@', $mail->to);
$todo = new Todo($to[0]);
//カテゴリチェック
if (!$todo->isValidCat()) {
error_log('Invalid category name! ' . $todo->cat);
exit;
}
//優先度設定(優先度を指定する場合は先頭に「優先度+スペース」を付ける)
$subjectArr = explode(' ', $mail->subject, 2);
if (is_numeric($subjectArr[0])) {
$pri = $subjectArr[0];
$task = $subjectArr[1];
} else {
$pri = 1;
$task = $mail->subject;
}
//TODOリストに追加
file_put_contents($todo->getPath(), $pri . "\t" . $task . "\n", FILE_APPEND);