34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
package notiser
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"91porn-server/app/appg"
|
|
"91porn-server/app/service/emailser"
|
|
"91porn-server/common/constant"
|
|
"91porn-server/common/constant/redisconst"
|
|
"91porn-server/common/email"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/maths"
|
|
"91porn-server/common/stderr"
|
|
)
|
|
|
|
func SendEamil(ctx context.Context, emailStr string) stderr.Code {
|
|
if code := emailser.CheckEmail(ctx, emailStr); code != stderr.Success {
|
|
return code
|
|
}
|
|
code := maths.RandDigits(constant.CaptchaLen)
|
|
redisKey := redisconst.GetEmailCaptchaKey(emailStr)
|
|
if err := appg.Redis.Set(redisKey, code, redisconst.EmailCaptchaExpire); err != nil {
|
|
log.ErrorX(ctx, "save code in redis failed", log.Any("email", emailStr), log.Any("redisKey", redisKey), log.E(err))
|
|
return stderr.ErrNetWorkBusy
|
|
}
|
|
var DefaultEmailSender string = fmt.Sprintf("%s@%s", "no-reply", appg.Conf.AWS.SES.VerifiedDomain)
|
|
if err := email.Client.Send(ctx, DefaultEmailSender, []*string{&emailStr}, "验证码",
|
|
fmt.Sprintf("<h2>您的验证码是 %s</h2>", code)); err != nil {
|
|
return stderr.ErrNetWorkBusy
|
|
}
|
|
return stderr.Success
|
|
}
|