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
|
package object
|
||||||
|
|
||||||
import (
|
import "github.com/go-gomail/gomail"
|
||||||
"strconv"
|
|
||||||
|
|
||||||
"github.com/astaxie/beego"
|
func SendEmail(title, content, dest, sender string) (string, error) {
|
||||||
"github.com/go-gomail/gomail"
|
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 := gomail.NewMessage()
|
||||||
message.SetAddressHeader("From", beego.AppConfig.String("mailUser"), sender)
|
message.SetAddressHeader("From", provider.ClientId, sender)
|
||||||
message.SetHeader("To", dest)
|
message.SetHeader("To", dest)
|
||||||
message.SetHeader("Subject", title)
|
message.SetHeader("Subject", title)
|
||||||
message.SetBody("text/html", content)
|
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)
|
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 {
|
func UpdateProvider(id string, provider *Provider) bool {
|
||||||
owner, name := util.GetOwnerAndNameFromId(id)
|
owner, name := util.GetOwnerAndNameFromId(id)
|
||||||
if getProvider(owner, name) == nil {
|
if getProvider(owner, name) == nil {
|
||||||
|
@ -29,8 +29,8 @@ type VerificationRecord struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SendVerificationCodeToEmail(remoteAddr, dest string) string {
|
func SendVerificationCodeToEmail(remoteAddr, dest string) string {
|
||||||
title := "Casdoor Code"
|
title := "Casdoor Verification Code"
|
||||||
sender := "Casdoor Admin"
|
sender := "Casdoor"
|
||||||
code := getRandomCode(5)
|
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)
|
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
|
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)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,18 +14,20 @@
|
|||||||
|
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import "regexp"
|
import (
|
||||||
|
"net/mail"
|
||||||
|
"regexp"
|
||||||
|
)
|
||||||
|
|
||||||
var reEmail *regexp.Regexp
|
|
||||||
var rePhoneCn *regexp.Regexp
|
var rePhoneCn *regexp.Regexp
|
||||||
|
|
||||||
func init() {
|
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}$")
|
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 {
|
func IsEmailValid(email string) bool {
|
||||||
return reEmail.MatchString(email)
|
_, err := mail.ParseAddress(email)
|
||||||
|
return err == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsPhoneCnValid(phone string) bool {
|
func IsPhoneCnValid(phone string) bool {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user