継続的ブログ

主にweb系の技術について書いています

メール受信 → 解析(Postfix + Rails)

Railsアプリと連携して下記のことをしたい。

  1. メール受信でRailsアプリ内プログラム実行
  2. メールの中身を確認

今回はMacのローカル環境で検証します。

環境

手順

まずはメール受信できるように

1. Postfixの起動(元々入っている)

$ sudo postfix start

2.メール送信

$ mail <Macユーザー名>

件名入力 → 本文入力 → 最後にEnterで改行して、'.'を入力してEnter

3.メール確認

$ mail

メールを受信することができました!

メール受信→プログラム実行してみる

1.プログラム作成

  • mailin
$ vim /Users/fakiyer/rails_project/script/mailin
#! /usr/bin/env bash
cd /Users/fakiyer/rails_project
/Users/fakiyer/.rbenv/shims/rails runner -e development ‘Mailer.receive(STDIN.read)'
$ chmod 777 /Users/fakiyer/rails_project/script/mailin
  • Mailer
def self.receive(mail)
  email = Mail.new(mail)
  body = email.body.decoded
  charset = email.charset
  body = body.force_encoding(charset).encode('utf-8')

  logger.info body
end

2.Postfixのaliases設定

$ sudo vim /etc/aliases
...
  <Macユーザー名>
  fakiyer: "| /Users/fakiyer/rails_project/script/mailin”
$ sudo newaliases

3.Postfix実行ユーザー変更

  • main.cf
#default_privs = nobody
default_privs = fakiyer
$ sudo postfix start

4.メール送信

$ mail <Macユーザー名>

railsログにbodyの内容が出力されているはずです!

参考