fetchmailでメール取得して処理する。¶
POP3などでメールを受信してメール本文のデータを処理させる場合、POP3のセッションからメール受信までコード書いてやるのはめんどい。fetchmailでそこんとこはやってしまおうと思ってmanを調べてみたら、やっぱりできるようだ。
例えば、以下のようにGmailでPOP3経由でメール受信した場合、.fetchmailrcで、mdaオプションの引数でメールをパイプで渡したいコマンドを指定すればよい。
poll pop.gmail.com with protocol pop3 port 995
user "youraccound@yourdomain" is "yourlocalaccount" here password "yourpassword"
keep ssl fetchall mda ~/bin/cat.sh
~/bin/cat.shはこんな中身。
#!/bin/sh
cat >> hoge
単純に”>”としなかったのは、既にhogeファイルに記録されている内容が上書きされてしまうから、というのもあるが、本質はそっちではなく、複数のメールを受信する場合、最後のメールで消されてしまうからだ。メール自体の処理は、この~/bin/cat.shの代わりに処理用のコードを書くか、一時ファイルとして保存してから処理すればよろし。