add setup smpt for intranet/internet smtp
enable send mail to both curystal.ci and WAN email
Signed-off-by: Luan Shengde <luanshengde2(a)huawei.com>
---
container/send-mail/mail-post.rb | 36 +++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/container/send-mail/mail-post.rb b/container/send-mail/mail-post.rb
index 4eecf6e..c7c31d5 100755
--- a/container/send-mail/mail-post.rb
+++ b/container/send-mail/mail-post.rb
@@ -7,21 +7,21 @@ require 'sinatra'
require 'json'
require 'yaml'
require 'open3'
-require_relative 'send-mail.rb'
+require_relative 'send-mail'
set :bind, '0.0.0.0'
-set :port, 11311
+set :port, ENV['SEND_MAIL_PORT']
post '/send_mail_yaml' do
data = YAML.safe_load request.body.read
- raise TypeError, data, 'request data type error' unless data.class.eql? Hash
+ raise TypeError, data, 'request data type error' unless data.instance_of?(Hash)
mail_info = {
'references' => data['references'] || '',
'from' => data['from'] || 'team(a)crystal.ci',
- 'subject' => data['subject'],
- 'to' => data['to'],
- 'body' => data['body']
+ 'subject' => data['subject'] || '',
+ 'to' => data['to'] || '',
+ 'body' => data['body'] || ''
}
check_send_mail(mail_info)
end
@@ -32,17 +32,29 @@ post '/send_mail_text' do
mail_info = {
'references' => data.references || '',
'from' => data.from || 'team(a)crystal.ci',
- 'subject' => data.subject,
- 'to' => data.to,
- 'body' => data.body.decoded
+ 'subject' => data.subject || '',
+ 'to' => data.to[0] || '',
+ 'body' => data.body.decoded || ''
}
check_send_mail(mail_info)
end
def check_send_mail(mail_info)
- raise TypeError, data, 'empty subject.' if mail_info['subject'].empty?
- raise TypeError, data, 'empty email address.' if mail_info['to'].empty?
- raise TypeError, data, 'empty email content.' if mail_info['body'].empty?
+ raise 'empty subject.' if mail_info['subject'].empty?
+ raise 'empty email address.' if mail_info['to'].empty?
+ raise 'empty email content.' if mail_info['body'].empty?
+
+ check_smtp(mail_info)
send_mail(mail_info)
end
+
+def check_smtp(mail_info)
+ mail_server = `/sbin/ip route |awk '/default/ {print $3}'`.chomp
+ if [nil, 'crystal.ci'].include? mail_info['to'].split('@')[1]
+ intranet_smtp(mail_server)
+ else
+ internet_smtp
+ mail_info['from'] = 'compass-ci(a)qq.com'
+ end
+end
--
2.23.0