golazy.dev
–
golazy.dev
/
lazymailer
Index
|
Files
package lazymailer ¶
import "golazy.dev/lazymailer"
Functions ¶
func MustParseAddress ¶
func MustParseAddress(value string) mail.Address
func ParseAddress ¶
func ParseAddress(value string) (mail.Address, error)
func Recipients ¶
func Recipients(addresses []mail.Address) []string
func WithContext ¶
func WithContext(ctx context.Context, mailer *Mailer) context.Context
Types ¶
type Address ¶
type Address = mail.Address
type Base ¶
type Base struct {
// contains filtered or unexported fields
}
func NewBase ¶
func NewBase(ctx context.Context, controller string, defaults Defaults) (Base, error)
func (b *Base) Build ¶
func (b *Base) Build(options Options) (Message, error)
func (b *Base) Mail ¶
func (b *Base) Mail(options Options) error
func (b *Base) Set ¶
func (b *Base) Set(name string, value any)
type Defaults ¶
type Defaults struct {
From mail.Address
Delivery string
Layout string
Headers textproto.MIMEHeader
}
type Delivery ¶
type Delivery interface {
Deliver(context.Context, Message) error
}
type DeliveryFunc ¶
type DeliveryFunc func(context.Context, Message) error
func (f DeliveryFunc) Deliver ¶
func (f DeliveryFunc) Deliver(ctx context.Context, message Message) error
type Mailer ¶
type Mailer struct {
// contains filtered or unexported fields
}
func FromContext ¶
func FromContext(ctx context.Context) (*Mailer, bool)
func New ¶
func New(ctx context.Context, deliveries *Registry) (*Mailer, error)
type MemoryDelivery ¶
type MemoryDelivery struct {
// contains filtered or unexported fields
}
func (d *MemoryDelivery) Deliver ¶
func (d *MemoryDelivery) Deliver(_ context.Context, message Message) error
func (d *MemoryDelivery) Messages ¶
func (d *MemoryDelivery) Messages() []Message
type Message ¶
type Message struct {
From mail.Address
To []mail.Address
Subject string
Headers textproto.MIMEHeader
Text string
HTML string
}
func (m Message) Bytes ¶
func (m Message) Bytes() ([]byte, error)
type Options ¶
type Options struct {
Action string
To []mail.Address
From mail.Address
Subject string
Delivery string
Layout string
Headers textproto.MIMEHeader
}
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶
func NewRegistry(defaultName string, deliveries map[string]Delivery) *Registry
func (r *Registry) Deliver ¶
func (r *Registry) Deliver(ctx context.Context, name string, message Message) error
type SMTPDelivery ¶
type SMTPDelivery struct {
Addr string
Auth smtp.Auth
}
func (d SMTPDelivery) Deliver ¶
func (d SMTPDelivery) Deliver(_ context.Context, message Message) error
Package lazymailer renders Rails-style mailer views into standard-library MIME messages and sends them through pluggable delivery implementations.
In a GoLazy application, create a Mailer from the application context after lazyapp has installed the shared renderer, store it in context with WithContext, and embed Base in app mailer types. Mailer views use the same lazyview engine, helpers, layouts, variants, and embedded filesystem as controller views.
The package is also usable without lazyapp when a lazycontroller.Renderer is available in context. Delivery is intentionally small: SMTPDelivery sends via net/smtp, MemoryDelivery captures messages for tests, and DeliveryFunc adapts custom transports.