github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/pkg/email/mail.go (about) 1 package email 2 3 import ( 4 "errors" 5 "strings" 6 ) 7 8 // Driver 邮件发送驱动 9 type Driver interface { 10 // Close 关闭驱动 11 Close() 12 // Send 发送邮件 13 Send(to, title, body string) error 14 } 15 16 var ( 17 // ErrChanNotOpen 邮件队列未开启 18 ErrChanNotOpen = errors.New("email queue is not started") 19 // ErrNoActiveDriver 无可用邮件发送服务 20 ErrNoActiveDriver = errors.New("no avaliable email provider") 21 ) 22 23 // Send 发送邮件 24 func Send(to, title, body string) error { 25 // 忽略通过QQ登录的邮箱 26 if strings.HasSuffix(to, "@login.qq.com") { 27 return nil 28 } 29 30 Lock.RLock() 31 defer Lock.RUnlock() 32 33 if Client == nil { 34 return ErrNoActiveDriver 35 } 36 37 return Client.Send(to, title, body) 38 }