email

package
v0.16.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 25, 2026 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChannelID       = notification.DeliveryChannelEmail
	AddressKeyEmail = "email"
)
View Source
const (
	MetadataKeyServiceProviderName = "service-provider-name"
	MetadataKeyServiceProviderType = "service-provider-type"
)

Variables

This section is empty.

Functions

func Channel

func Channel(renderer func(ctx context.Context, model any) (Content, error)) notification.RendererBinding

func Identity

func Identity(address string) map[string]string

func Renderer

func Renderer(renderer func(ctx context.Context, model any) (Content, error)) notification.ChannelRenderer

func TemplateChannel

func TemplateChannel(renderer func(ctx context.Context, model any) (TemplateContent, error)) notification.RendererBinding

func TemplateRenderer

func TemplateRenderer(renderer func(ctx context.Context, model any) (TemplateContent, error)) notification.ChannelRenderer

Types

type Content

type Content struct {
	From        string
	Subject     string
	HTMLBody    string
	TextBody    string
	Attachments []emailtypes.Attachment
	Headers     map[string]string
}

func (Content) Clone

func (c Content) Clone() Content

func (Content) ClonePayload

func (c Content) ClonePayload() any

func (Content) Validate

func (c Content) Validate() error

type ContentRenderer

type ContentRenderer interface {
	RenderTemplate(ctx context.Context, content TemplateContent) (Content, error)
}

type ContentRendererProvider

type ContentRendererProvider func() ContentRenderer

type Delivery

type Delivery struct {
	To       string
	Content  Content
	Metadata notification.TransportMetadata
}

func (Delivery) Validate

func (d Delivery) Validate() error

type EnabledResolver

type EnabledResolver func() bool

type Enqueuer

type Enqueuer interface {
	IsStarted() bool
	EnqueueNotificationEmail(ctx context.Context, delivery Delivery) ([]int64, error)
}

type EnqueuerProvider

type EnqueuerProvider func() Enqueuer

type Provider

type Provider struct {
	// contains filtered or unexported fields
}

func NewCatalogProvider

func NewCatalogProvider(cfg *config.Config) *Provider

func NewProvider

func NewProvider(senderProvider SenderProvider, enqueuerProvider EnqueuerProvider, opts ...ProviderOption) *Provider

func NewProviderWithTemplateRenderer

func NewProviderWithTemplateRenderer(
	senderProvider SenderProvider,
	enqueuerProvider EnqueuerProvider,
	contentRendererProvider ContentRendererProvider,
) *Provider

func NewProviderWithTemplateRendererOptions

func NewProviderWithTemplateRendererOptions(
	senderProvider SenderProvider,
	enqueuerProvider EnqueuerProvider,
	contentRendererProvider ContentRendererProvider,
	opts ...ProviderOption,
) *Provider

func (*Provider) BuildTarget

func (p *Provider) BuildTarget(rawTarget string) (notification.Target, error)

func (*Provider) Deliver

func (p *Provider) Deliver(ctx context.Context, delivery notification.Delivery) error

Deliver prefers enqueuing when a started enqueuer is available. If direct sending is the only option and no sender is configured or enabled, delivery is treated as a no-op so notifications can be optional in some environments.

func (*Provider) DisplayTarget

func (p *Provider) DisplayTarget(target notification.Target) (string, error)

func (*Provider) ID

func (p *Provider) ID() string

func (*Provider) NormalizeTarget

func (p *Provider) NormalizeTarget(target notification.Target) (notification.Target, error)

func (*Provider) ProviderMetadata

func (p *Provider) ProviderMetadata() notification.ProviderMetadata

func (*Provider) ResolveUserTarget

func (p *Provider) ResolveUserTarget(user notification.User) (notification.Target, bool, error)

func (*Provider) ValidateTarget

func (p *Provider) ValidateTarget(target notification.Target) error

type ProviderOption

type ProviderOption func(*Provider)

func WithEnabledResolver

func WithEnabledResolver(resolver EnabledResolver) ProviderOption

func WithServiceProviderResolver

func WithServiceProviderResolver(resolver ServiceProviderResolver) ProviderOption

type Sender

type Sender interface {
	IsEnabled() bool
	Send(ctx context.Context, message *emailtypes.Message) (*emailtypes.SendResult, error)
}

type SenderProvider

type SenderProvider func() Sender

type ServiceProviderDescriptor

type ServiceProviderDescriptor struct {
	Name string
	Type string
}

type ServiceProviderResolver

type ServiceProviderResolver func() ServiceProviderDescriptor

type TemplateContent

type TemplateContent struct {
	TemplateName string
	TemplateData map[string]any
	From         string
	Subject      string
	HTMLBody     string
	TextBody     string
	Attachments  []emailtypes.Attachment
	Headers      map[string]string
}

func (TemplateContent) Clone

func (c TemplateContent) Clone() TemplateContent

func (TemplateContent) ClonePayload

func (c TemplateContent) ClonePayload() any

func (TemplateContent) FallbackContent

func (c TemplateContent) FallbackContent() (Content, error)

func (TemplateContent) Validate

func (c TemplateContent) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL