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  }