|
|
|
package email
|
|
|
|
|
|
|
|
import (
|
|
|
|
"sync"
|
|
|
|
|
|
|
|
model "github.com/cloudreve/Cloudreve/v3/models"
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/util"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Client 默认的邮件发送客户端
|
|
|
|
var Client Driver
|
|
|
|
|
|
|
|
// Lock 读写锁
|
|
|
|
var Lock sync.RWMutex
|
|
|
|
|
|
|
|
// Init 初始化
|
|
|
|
func Init() {
|
|
|
|
util.Log().Debug("邮件队列初始化")
|
|
|
|
Lock.Lock()
|
|
|
|
defer Lock.Unlock()
|
|
|
|
|
|
|
|
if Client != nil {
|
|
|
|
Client.Close()
|
|
|
|
}
|
|
|
|
|
|
|
|
// 读取SMTP设置
|
|
|
|
options := model.GetSettingByNames(
|
|
|
|
"fromName",
|
|
|
|
"fromAdress",
|
|
|
|
"smtpHost",
|
|
|
|
"replyTo",
|
|
|
|
"smtpUser",
|
|
|
|
"smtpPass",
|
|
|
|
"smtpEncryption",
|
|
|
|
)
|
|
|
|
port := model.GetIntSetting("smtpPort", 25)
|
|
|
|
keepAlive := model.GetIntSetting("mail_keepalive", 30)
|
|
|
|
|
|
|
|
client := NewSMTPClient(SMTPConfig{
|
|
|
|
Name: options["fromName"],
|
|
|
|
Address: options["fromAdress"],
|
|
|
|
ReplyTo: options["replyTo"],
|
|
|
|
Host: options["smtpHost"],
|
|
|
|
Port: port,
|
|
|
|
User: options["smtpUser"],
|
|
|
|
Password: options["smtpPass"],
|
|
|
|
Keepalive: keepAlive,
|
|
|
|
Encryption: model.IsTrueVal(options["smtpEncryption"]),
|
|
|
|
})
|
|
|
|
|
|
|
|
Client = client
|
|
|
|
}
|