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.