listen the mailbox for new email
handle_new_email
handle the email with defined opetions
- apply_account
email subject: apply account
Signed-off-by: Luan Shengde <shdluan(a)163.com>
---
lib/mail-robot.rb | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100755 lib/mail-robot.rb
diff --git a/lib/mail-robot.rb b/lib/mail-robot.rb
new file mode 100755
index 0000000..0ae80f3
--- /dev/null
+++ b/lib/mail-robot.rb
@@ -0,0 +1,36 @@
+#!/usr/bin/env ruby
+# SPDX-License-Identifier: MulanPSL-2.0+
+# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+# frozen_string_literal: true
+
+require 'json'
+require 'yaml'
+require 'listen'
+require 'mail'
+require 'fileutils'
+
+def monitor_new_email(mail_inbox, mail_drafts)
+ listener = Listen.to(mail_inbox) do |_modified, added, _removed|
+ next if added.empty?
+
+ added.each do |mail_file|
+ handle_new_email(mail_file, mail_drafts)
+ end
+ end
+ listener.start
+ sleep
+end
+
+def handle_new_email(mail_file, mail_drafts)
+ mail_content = Mail.read(mail_file)
+ apply_account(mail_content)
+
+ FileUtils.mv(mail_file, mail_drafts)
+end
+
+def apply_account(mail_content)
+ return unless mail_content.subject == 'apply account'
+
+ assign_uuid = AssignAccount.new(mail_content)
+ assign_uuid.send_account
+end
--
2.23.0