package notify import ( "context" "fmt" "net/mail" "strconv" "github.com/pocketbase/pocketbase/tools/mailer" ) const defaultSmtpHostPort = "25" type Mail struct { username string to string client *mailer.SmtpClient } func NewMail(senderAddress, receiverAddresses, smtpHostAddr, smtpHostPort, password string) (*Mail, error) { if smtpHostPort == "" { smtpHostPort = defaultSmtpHostPort } port, err := strconv.Atoi(smtpHostPort) if err != nil { return nil, fmt.Errorf("invalid smtp port: %w", err) } client := mailer.SmtpClient{ Host: smtpHostAddr, Port: port, Username: senderAddress, Password: password, Tls: true, } return &Mail{ username: senderAddress, client: &client, to: receiverAddresses, }, nil } func (m *Mail) Send(ctx context.Context, subject, content string) error { message := &mailer.Message{ From: mail.Address{ Address: m.username, }, To: []mail.Address{{Address: m.to}}, Subject: subject, Text: content, } return m.client.Send(message) }