システムからメール送信は良く行われますが、メールを受信したタイミングでシステムの処理を実行するには準備が必要です。Postflixなどでメール受信をトリガーにするといったことも行われますが、構築が大変です。メールサーバにトラブルが発生した際の影響範囲も大きくなります。
今回はメールサーバとメインシステムを疎結合にしつつ、連携させるためにIMAPをREST化するライブラリを紹介します。
andris9/imapapi: Self hosted application to access IMAP and SMTP accounts over REST
Node.jsで作られたシステムです。データはRedisに保存されます。IMAPだけでなくSMTPにもアクセスが可能です。
andris9/imapapi: Self hosted application to access IMAP and SMTP accounts over REST
sikkimtemi/imap_to_json: REST API経由でIMAPのメールを取得可能にします。
Pythonで作られたシステムです。データはJSONで取得できます。添付ファイルは tmp ディレクトリの中に保存され、絶対パスが取得できます。
sikkimtemi/imap_to_json: REST API経由でIMAPのメールを取得可能にします。
bachors/Imap_parser.php: IMAP mailbox parser using PHP & return Array or JSON.
PHPで作られたIMAPパーサーです。IMAP用ライブラリは独特なAPIを持ったものが多いですが、Imap_parser.phpは連想配列を使ったシンプルな使い方が可能です。この結果をWeb API化するのは難しくないでしょう。
bachors/Imap_parser.php: IMAP mailbox parser using PHP & return Array or JSON.
polo2ro/imapbox: Dump imap inbox to a local folder in a regular backupable format: html, json and attachements
IMAPをローカルフォルダ内に保存します。フォーマットはHTML、JSON、PDFで保存されます。添付ファイルも保存できます。ファイルになれば、それをWeb API化するのも難しくないでしょう。
まとめ
メールと連携するシステムを構築する場合、お互いを疎結合にすることが安定運用につながります。安定したメールサーバの運用は容易ではないので、なるべく切り分けた方が良いでしょう。
Customers Mail Cloudではメール受信時に指定したURLを呼び出すWebhook機能があります。今回紹介したソフトウェアはプル型ですが、Webhookを使うことでプッシュ型の連携が実現できます。ぜひお試しください。