mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Add getDefaultEmailProvider().
This commit is contained in:
parent
fb9f18af2c
commit
162c7261a3
@ -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)
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user