2011年5月15日日曜日

postfixで受信したメールをrailsで解析する

Actionmailerで解析できるはずなのだけど、うまくできなかったのでTmailで実現してみた。

まず対応するモデルを作成
ruby script/generate mailer Mailget

で、モデルを修正

require 'tmail'
require 'kconv'
class Mailget < ActionMailer::Base
 def receive(email)
  entry = Entry.new
  mailadd = TMail::Mail.parse(email)
  entry.from = mailadd.from[0]
  entry.discription = mailadd.body.to_s.toutf8
  entry.save
 end
end

あとは、postfixで受信したメールを流してやる。
testアカウントできたメールを処理するように設定。

virtualの設定
# sudo vim /etc/postfix/virtual
下記を一番下に追記
test.example.com anything
test@test.example.com test

aliasesの設定
# sudo vim /etc/aliases

mailer-daemon: postmaster
postmaster: root
test: "| /usr/bin/ruby /var/www/mail/script/runner -e production 'Mailget.receive STDIN.read'" ※追記

これでpost@test.example.com宛にメールがきたら、解析して、DBに送信のメールアドレスと本文を日本語で入れる。
うまく処理されているかどうかをログで確認して終了
# vim /var/log/maillog

もしDBなどにうまく書き込めていなければ、パーミッションのエラーの可能性があるので、その時は
777などに変更してください。

0 件のコメント:

コメントを投稿