提交 #1
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Huawei Device Co., Ltd.
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"github.com/sirupsen/logrus"
|
||||
"gopkg.in/gomail.v2"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type MailConfig struct {
|
||||
Host string `key:"host" default:""`
|
||||
Port string `key:"port" default:""`
|
||||
port int
|
||||
User string `key:"user" default:""`
|
||||
Password string `key:"password" default:""`
|
||||
From string `key:"from" default:""`
|
||||
To string `key:"to" default:""`
|
||||
toList []string
|
||||
}
|
||||
|
||||
var mailConfig MailConfig
|
||||
|
||||
func init() {
|
||||
ParseFromConfigFile("mail", &mailConfig)
|
||||
if mailConfig.Host != "" {
|
||||
var err error
|
||||
if mailConfig.port, err = strconv.Atoi(mailConfig.Port); err != nil {
|
||||
panic(fmt.Errorf("parse mail port err: %v", err))
|
||||
}
|
||||
mailConfig.toList = strings.Split(mailConfig.To, ",")
|
||||
}
|
||||
}
|
||||
|
||||
func SendMail(subject string, body string, attachments ...string) error {
|
||||
if mailConfig.Host == "" {
|
||||
logrus.Info("mail not configured, do nothing")
|
||||
return nil
|
||||
}
|
||||
dail := gomail.NewDialer(mailConfig.Host, mailConfig.port, mailConfig.User, mailConfig.Password)
|
||||
dail.TLSConfig = &tls.Config{InsecureSkipVerify: true, ServerName: mailConfig.Host}
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetBody("text/html", body)
|
||||
msg.SetHeader("From", mailConfig.From)
|
||||
msg.SetHeader("To", mailConfig.toList...)
|
||||
msg.SetHeader("Subject", subject)
|
||||
for _, a := range attachments {
|
||||
msg.Attach(a)
|
||||
}
|
||||
return dail.DialAndSend(msg)
|
||||
}
|
||||
Reference in New Issue
Block a user