example:
name => email_addr
logo => email_addr
email_addr_r => email_addr_d
an email address can be set multi mappings, you can set a name or email
to a specified email address
when you write either a name or an email address in the send address
bar, the email address will be converted to the specified address
Signed-off-by: Luan Shengde <shdluan(a)163.com>
---
container/send-internet-mail/email_mapping.rb | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100755 container/send-internet-mail/email_mapping.rb
diff --git a/container/send-internet-mail/email_mapping.rb b/container/send-internet-mail/email_mapping.rb
new file mode 100755
index 0000000..4c068b0
--- /dev/null
+++ b/container/send-internet-mail/email_mapping.rb
@@ -0,0 +1,49 @@
+#!/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 'redis'
+
+# email address translation according to the email_mapping queue
+# email_mapping is used to set email mapping, example:
+# email_mapping:
+# name => email_address_d
+# email_address_r1 => email_address_d
+# email_address_r2 => email_address_d
+# ...
+# can set multi keys for an email address, the key can be a name,
+# an email, or some logo else
+# case add the key is added to email address bar, the key will be
+# transferred to the destination email address
+class EmailAddrMapping
+ def initialize(mail_info)
+ @mail_info = mail_info
+ @redis = Redis.new('host' => REDIS_HOST, 'port' => REDIS_PORT)
+ end
+
+ def check_email_mapping
+ email_to = @mail_info['to'].clone
+ email_cc = @mail_info['cc'].clone
+ email_bcc = @mail_info['bcc'].clone
+ @mail_info['to'] = email_mapping(email_to)
+ @mail_info['cc'] = email_mapping(email_cc)
+ @mail_info['bcc'] = email_mapping(email_bcc)
+
+ return @mail_info
+ end
+
+ def email_mapping(mail_list)
+ return if mail_list.nil? || mail_list.empty?
+
+ mail_list.clone.each do |email|
+ next unless @redis.hexists 'email_mapping', email
+
+ mapped_email = @redis.hget 'email_mapping', email
+ mail_list -= [email]
+ mail_list << mapped_email unless mail_list.include? mapped_email
+ end
+ return mail_list
+ end
+end
--
2.23.0