Add getDefaultEmailProvider().

This commit is contained in:
Yang Luo 2021-05-15 10:13:12 +08:00
parent fb9f18af2c
commit 162c7261a3
4 changed files with 36 additions and 32 deletions

View File

@ -16,35 +16,20 @@
package object
import (
"strconv"
import "github.com/go-gomail/gomail"
"github.com/astaxie/beego"
"github.com/go-gomail/gomail"
)
func SendEmail(title, content, dest, sender string) (string, error) {
provider := getDefaultEmailProvider()
if provider == nil {
return "Please set an Email provider first", nil
}
dialer := gomail.NewDialer(provider.Host, provider.Port, provider.ClientId, provider.ClientSecret)
var dialer *gomail.Dialer
var mailConn = map[string]string{
"user": beego.AppConfig.String("mailUser"),
"pass": beego.AppConfig.String("mailPass"),
"host": beego.AppConfig.String("mailHost"),
"port": beego.AppConfig.String("mailPort"),
}
func InitDialer() {
port, _ := strconv.Atoi(mailConn["port"])
dialer = gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"])
}
func SendEmail(title, content, dest, sender string) error {
message := gomail.NewMessage()
message.SetAddressHeader("From", beego.AppConfig.String("mailUser"), sender)
message.SetAddressHeader("From", provider.ClientId, sender)
message.SetHeader("To", dest)
message.SetHeader("Subject", title)
message.SetBody("text/html", content)
if dialer == nil {
InitDialer()
}
return dialer.DialAndSend(message)
return "", dialer.DialAndSend(message)
}

View File

@ -63,6 +63,19 @@ func GetProvider(id string) *Provider {
return getProvider(owner, name)
}
func getDefaultEmailProvider() *Provider {
provider := Provider{Owner: "admin", Category: "Email"}
existed, err := adapter.Engine.Get(&provider)
if err != nil {
panic(err)
}
if !existed {
return nil
}
return &provider
}
func UpdateProvider(id string, provider *Provider) bool {
owner, name := util.GetOwnerAndNameFromId(id)
if getProvider(owner, name) == nil {

View File

@ -29,8 +29,8 @@ type VerificationRecord struct {
}
func SendVerificationCodeToEmail(remoteAddr, dest string) string {
title := "Casdoor Code"
sender := "Casdoor Admin"
title := "Casdoor Verification Code"
sender := "Casdoor"
code := getRandomCode(5)
content := fmt.Sprintf("You have requested a verification code at Casdoor. Here is your code: %s, please enter in 5 minutes.", code)
@ -38,7 +38,11 @@ func SendVerificationCodeToEmail(remoteAddr, dest string) string {
return result
}
if err := SendEmail(title, content, dest, sender); err != nil {
msg, err := SendEmail(title, content, dest, sender)
if msg != "" {
return msg
}
if err != nil {
panic(err)
}

View File

@ -14,18 +14,20 @@
package util
import "regexp"
import (
"net/mail"
"regexp"
)
var reEmail *regexp.Regexp
var rePhoneCn *regexp.Regexp
func init() {
reEmail, _ = regexp.Compile(`^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$`)
rePhoneCn, _ = regexp.Compile("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|191|198|199|(147))\\d{8}$")
}
func IsEmailValid(email string) bool {
return reEmail.MatchString(email)
_, err := mail.ParseAddress(email)
return err == nil
}
func IsPhoneCnValid(phone string) bool {