受け取ったメールをサーバに送信してゴニョゴニョしたいなと思ったので、
調べてみたら、GAS(Google Apps Script)+Gmailで簡単にできたのでその備忘録。
流れとしてはこんな感じ。
- 定期的にGASを起動して、メールをチェック
- 未処理のメールがあったら、サーバへ送る
- 処理が終わったら、スターを付ける
GASのソースはこんな感じ
function sendPostCSV() { // 未処理(スターなし)のスレッドを検索 var searchCondition = 'from:foo@example.com -is:starred'; var threads = GmailApp.search(searchCondition, 0, 50); //スレッドからメールを取得し二次元配列に格納 var messages = GmailApp.getMessagesForThreads(threads); // 検索結果の送信: ループ for(var i in messages){ for(var j in messages[i]){ var msg = messages[i][j]; Logger.log(msg.getSubject()); Logger.log(msg.getPlainBody()); //サーバにメッセージを送信 sendServer(msg.getPlainBody()); //処理済みのメッセージをスターをつける msg.star(); } } } function sendServer(strMessage){ var options = { "method" : "post", "payload" : { "data": strMessage } }; var response = UrlFetchApp.fetch("https://server.example.com/post/mail/", options); var content = response.getContentText("UTF-8"); Logger.log(content); }
あとは、トリガーで定期実行させればOK。
ログインできるアカウントのGmailであればこれでよさそう(´ω`)
検索時に指定できる演算子
公式ドキュメントはこのあたり
・Gmail で使用できる検索演算子 - Gmail ヘルプ
あと、以下の記事がわかりやすかった
GASでのの通信処理
UrlFetchAppを使うといい感じ。
以下の記事もわかりやすかった
以上!!
参考にしたサイト様
- GAS連携
- 検索のクエリ
- GASの通信処理