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@163.com --- container/mail-robot/mail-robot.rb | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 container/mail-robot/mail-robot.rb
diff --git a/container/mail-robot/mail-robot.rb b/container/mail-robot/mail-robot.rb new file mode 100755 index 0000000..a809eae --- /dev/null +++ b/container/mail-robot/mail-robot.rb @@ -0,0 +1,41 @@ +#!/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' +require_relative 'lib/apply-account' + +MAILDIR = ENV['MAILDIR'] + +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 = ApplyAccount.new(mail_content) + assign_uuid.check_to_send_account +end + +monitor_new_email("#{MAILDIR}/new", "#{MAILDIR}/cur")
- added.each do |mail_file|
handle_new_email(mail_file, mail_drafts)
- end
added.each { |mail_file| handle_new_email(mail_file, mail_drafts) }
it can omit 'do/end'.
Thanks, Yinsi
- 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 = ApplyAccount.new(mail_content)
- assign_uuid.check_to_send_account
+end
+monitor_new_email("#{MAILDIR}/new", "#{MAILDIR}/cur")
2.23.0
On Tue, Nov 17, 2020 at 10:11:32AM +0800, Liu Yinsi wrote:
- added.each do |mail_file|
handle_new_email(mail_file, mail_drafts)
- end
added.each { |mail_file| handle_new_email(mail_file, mail_drafts) }
it can omit 'do/end'.
yes it can be write like this, but not good for reading
Thanks, Luan Shengde
Thanks, Yinsi
- 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 = ApplyAccount.new(mail_content)
- assign_uuid.check_to_send_account
+end
+monitor_new_email("#{MAILDIR}/new", "#{MAILDIR}/cur")
2.23.0
On Fri, Nov 13, 2020 at 06:24:59PM +0800, Luan Shengde wrote:
mailbox接收的邮件都是新的呀,为什么每个email变量前面都要加new这个前缀,还有old email吗
Thanks, Yinsi
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@163.com
container/mail-robot/mail-robot.rb | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 container/mail-robot/mail-robot.rb
diff --git a/container/mail-robot/mail-robot.rb b/container/mail-robot/mail-robot.rb new file mode 100755 index 0000000..a809eae --- /dev/null +++ b/container/mail-robot/mail-robot.rb @@ -0,0 +1,41 @@ +#!/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' +require_relative 'lib/apply-account'
+MAILDIR = ENV['MAILDIR']
+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 = ApplyAccount.new(mail_content)
- assign_uuid.check_to_send_account
+end
+monitor_new_email("#{MAILDIR}/new", "#{MAILDIR}/cur")
2.23.0
On Tue, Nov 17, 2020 at 10:26:07AM +0800, Liu Yinsi wrote:
On Fri, Nov 13, 2020 at 06:24:59PM +0800, Luan Shengde wrote:
mailbox接收的邮件都是新的呀,为什么每个email变量前面都要加new这个前缀,还有old email吗
just tell the email file we handled is new, for easier readablity
Thanks, Luan Shengde
Thanks, Yinsi
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@163.com
container/mail-robot/mail-robot.rb | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100755 container/mail-robot/mail-robot.rb
diff --git a/container/mail-robot/mail-robot.rb b/container/mail-robot/mail-robot.rb new file mode 100755 index 0000000..a809eae --- /dev/null +++ b/container/mail-robot/mail-robot.rb @@ -0,0 +1,41 @@ +#!/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' +require_relative 'lib/apply-account'
+MAILDIR = ENV['MAILDIR']
+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 = ApplyAccount.new(mail_content)
- assign_uuid.check_to_send_account
+end
+monitor_new_email("#{MAILDIR}/new", "#{MAILDIR}/cur")
2.23.0