1
0
mirror of https://github.com/pocketbase/pocketbase.git synced 2025-01-23 14:07:13 +02:00
pocketbase/tools/mailer/mailer.go
2023-02-01 22:07:46 +02:00

44 lines
1.0 KiB
Go

package mailer
import (
"io"
"net/mail"
)
// Message defines a generic email message struct.
type Message struct {
From mail.Address
To []mail.Address
Bcc []mail.Address
Cc []mail.Address
Subject string
HTML string
Text string
Headers map[string]string
Attachments map[string]io.Reader
}
// Mailer defines a base mail client interface.
type Mailer interface {
// Send sends an email with the provided Message.
Send(message *Message) error
}
// addressesToStrings converts the provided address to a list of serialized RFC 5322 strings.
//
// To export only the email part of mail.Address, you can set withName to false.
func addressesToStrings(addresses []mail.Address, withName bool) []string {
result := make([]string, len(addresses))
for i, addr := range addresses {
if withName && addr.Name != "" {
result[i] = addr.String()
} else {
// keep only the email part to avoid wrapping in angle-brackets
result[i] = addr.Address
}
}
return result
}