Create & Init Project...
This commit is contained in:
52
app/admin/main/up/dao/email/BUILD
Normal file
52
app/admin/main/up/dao/email/BUILD
Normal file
@ -0,0 +1,52 @@
|
||||
package(default_visibility = ["//visibility:public"])
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go:def.bzl",
|
||||
"go_test",
|
||||
"go_library",
|
||||
)
|
||||
|
||||
go_test(
|
||||
name = "go_default_test",
|
||||
srcs = [
|
||||
"dao_test.go",
|
||||
"email_test.go",
|
||||
],
|
||||
embed = [":go_default_library"],
|
||||
rundir = ".",
|
||||
tags = ["automanaged"],
|
||||
deps = [
|
||||
"//app/admin/main/up/conf:go_default_library",
|
||||
"//vendor/github.com/smartystreets/goconvey/convey:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"dao.go",
|
||||
"email.go",
|
||||
],
|
||||
importpath = "go-common/app/admin/main/up/dao/email",
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//app/admin/main/up/conf:go_default_library",
|
||||
"//library/log:go_default_library",
|
||||
"//vendor/gopkg.in/gomail.v2:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "package-srcs",
|
||||
srcs = glob(["**"]),
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all-srcs",
|
||||
srcs = [":package-srcs"],
|
||||
tags = ["automanaged"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
26
app/admin/main/up/dao/email/dao.go
Normal file
26
app/admin/main/up/dao/email/dao.go
Normal file
@ -0,0 +1,26 @@
|
||||
package email
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
|
||||
"go-common/app/admin/main/up/conf"
|
||||
|
||||
gomail "gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
// Dao is redis dao.
|
||||
type Dao struct {
|
||||
email *gomail.Dialer
|
||||
}
|
||||
|
||||
// New is new redis dao.
|
||||
func New(c *conf.Config) (d *Dao) {
|
||||
d = &Dao{
|
||||
// mail
|
||||
email: gomail.NewDialer(c.MailConf.Host, c.MailConf.Port, c.MailConf.Username, c.MailConf.Password),
|
||||
}
|
||||
d.email.TLSConfig = &tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
}
|
||||
return
|
||||
}
|
38
app/admin/main/up/dao/email/dao_test.go
Normal file
38
app/admin/main/up/dao/email/dao_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
package email
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"go-common/app/admin/main/up/conf"
|
||||
)
|
||||
|
||||
var (
|
||||
d *Dao
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
if os.Getenv("DEPLOY_ENV") != "" {
|
||||
flag.Set("app_id", "main.archive.up-admin")
|
||||
flag.Set("conf_token", "930697bb7def4df0713ef8080596b863")
|
||||
flag.Set("tree_id", "36438")
|
||||
flag.Set("conf_version", "1")
|
||||
flag.Set("deploy_env", "uat")
|
||||
flag.Set("conf_host", "config.bilibili.co")
|
||||
flag.Set("conf_path", "/tmp")
|
||||
flag.Set("region", "sh")
|
||||
flag.Set("zone", "sh001")
|
||||
} else {
|
||||
flag.Set("conf", "../../cmd/up-admin.toml")
|
||||
}
|
||||
if os.Getenv("UT_LOCAL_TEST") != "" {
|
||||
flag.Set("conf", "../../cmd/up-admin.toml")
|
||||
}
|
||||
flag.Parse()
|
||||
if err := conf.Init(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
d = New(conf.Conf)
|
||||
os.Exit(m.Run())
|
||||
}
|
39
app/admin/main/up/dao/email/email.go
Normal file
39
app/admin/main/up/dao/email/email.go
Normal file
@ -0,0 +1,39 @@
|
||||
package email
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"go-common/app/admin/main/up/conf"
|
||||
"go-common/library/log"
|
||||
|
||||
"gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
//SendMail send the email.
|
||||
func (d *Dao) SendMail(body string, subject string, send ...string) (err error) {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", conf.Conf.MailConf.Username)
|
||||
msg.SetHeader("To", send...)
|
||||
msg.SetHeader("Subject", subject)
|
||||
msg.SetBody("text/html", body, gomail.SetPartEncoding(gomail.Base64))
|
||||
if err = d.email.DialAndSend(msg); err != nil {
|
||||
log.Error("s.email.DialAndSend error(%v)", err)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
//SendMailAttach send the email.
|
||||
func (d *Dao) SendMailAttach(filename string, subject string, send []string) (err error) {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", conf.Conf.MailConf.Username)
|
||||
msg.SetHeader("To", send...)
|
||||
msg.SetHeader("Subject", subject)
|
||||
msg.Attach(filename)
|
||||
if err = d.email.DialAndSend(msg); err != nil {
|
||||
log.Error("s.email.DialAndSend error(%v)", err)
|
||||
return
|
||||
}
|
||||
err = os.Remove(filename)
|
||||
return
|
||||
}
|
39
app/admin/main/up/dao/email/email_test.go
Normal file
39
app/admin/main/up/dao/email/email_test.go
Normal file
@ -0,0 +1,39 @@
|
||||
package email
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/smartystreets/goconvey/convey"
|
||||
)
|
||||
|
||||
func TestEmailSendMail(t *testing.T) {
|
||||
convey.Convey("SendMail", t, func(ctx convey.C) {
|
||||
var (
|
||||
body = ""
|
||||
subject = ""
|
||||
send = ""
|
||||
)
|
||||
ctx.Convey("When everything goes positive", func(ctx convey.C) {
|
||||
err := d.SendMail(body, subject, send)
|
||||
ctx.Convey("Then err should be nil.", func(ctx convey.C) {
|
||||
ctx.So(err, convey.ShouldNotBeNil)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestEmailSendMailAttach(t *testing.T) {
|
||||
convey.Convey("SendMailAttach", t, func(ctx convey.C) {
|
||||
var (
|
||||
filename = ""
|
||||
subject = ""
|
||||
send = []string{}
|
||||
)
|
||||
ctx.Convey("When everything goes positive", func(ctx convey.C) {
|
||||
err := d.SendMailAttach(filename, subject, send)
|
||||
ctx.Convey("Then err should be nil.", func(ctx convey.C) {
|
||||
ctx.So(err, convey.ShouldNotBeNil)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user