email

package
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TemplateVariableCode             = "code"
	TemplateVariableOrganizationName = "organization_name"
	TemplateVariableInviteURL        = "invite_url"
	TemplateVariableInvitationCode   = "invitation_code"
	TemplateVariableRole             = "role"
	TemplateVariableExpiresAt        = "expires_at"
)

Variables

View Source
var (
	ErrUnknownTemplate         = errors.New("unknown email template")
	ErrMissingTemplateVariable = errors.New("missing required email template variable")
)
View Source
var (
	ErrEmptyTemplatePart          = errors.New("email template part is empty")
	ErrMalformedTemplate          = errors.New("email template syntax is malformed")
	ErrUnknownTemplateVariable    = errors.New("unknown email template variable")
	ErrMissingTemplatePlaceholder = errors.New("required email template placeholder is missing")
	ErrInvalidTemplateSubject     = errors.New("email template subject contains a line break")
	ErrMissingTemplateUpdater     = errors.New("email template updater is missing")
)

Functions

func ValidateTemplate added in v0.20.0

func ValidateTemplate(key domain.EmailTemplate) error

ValidateTemplate checks whether Core owns the supplied email template type.

Types

type EffectiveTemplate added in v0.20.0

type EffectiveTemplate struct {
	Definition TemplateDefinition
	Source     TemplateSource
	Override   *domain.EmailTemplateOverride
}

EffectiveTemplate combines immutable catalog metadata with an optional persisted customization.

type LoginAlertPayload

type LoginAlertPayload struct {
	V          int       `json:"v"`
	IPAddress  string    `json:"ip_address"`
	LoggedInAt time.Time `json:"logged_in_at"`
	UserAgent  string    `json:"user_agent,omitempty"`
}

type Message

type Message struct {
	Subject string
	Text    string
	HTML    string
}

func RenderBuiltInTemplate added in v0.20.0

func RenderBuiltInTemplate(key domain.EmailTemplate, data TemplateData) (Message, error)

RenderBuiltInTemplate renders the canonical Authara default for a template.

type NoopSender

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

func NewNoopSender

func NewNoopSender(cfg NoopSenderConfig) *NoopSender

func (*NoopSender) Send

func (s *NoopSender) Send(ctx context.Context, to string, msg Message) error

type NoopSenderConfig

type NoopSenderConfig struct {
	Logger *slog.Logger
}

type OperatorAuditPage added in v0.20.0

type OperatorAuditPage struct {
	Events   []domain.OperatorAuditEvent
	Page     int
	Size     int
	HasNext  bool
	Action   string
	Template domain.EmailTemplate
}

type OperatorAuditQuery added in v0.20.0

type OperatorAuditQuery struct {
	Page     int
	Size     int
	Action   string
	Template domain.EmailTemplate
}

type PreviewTemplateInput added in v0.20.0

type PreviewTemplateInput struct {
	Template        domain.EmailTemplate
	SubjectTemplate string
	TextTemplate    string
	HTMLTemplate    string
}

type SMTPSender

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

func NewSMTPSender

func NewSMTPSender(
	host string,
	port int,
	username string,
	password string,
	from string,
	useTLS bool,
	timeout time.Duration,
) *SMTPSender

func (*SMTPSender) Send

func (s *SMTPSender) Send(ctx context.Context, to string, msg Message) error

type SaveTemplateOverrideInput added in v0.20.0

type SaveTemplateOverrideInput struct {
	Template         domain.EmailTemplate
	SubjectTemplate  string
	TextTemplate     string
	HTMLTemplate     string
	ExpectedRevision int64
	UpdatedByUserID  uuid.UUID
}

type Sender

type Sender interface {
	Send(ctx context.Context, to string, msg Message) error
}

type Service

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

func NewService

func NewService(sender Sender) *Service

func (*Service) Send

func (s *Service) Send(ctx context.Context, to string, msg Message) error

type TemplateData added in v0.20.0

type TemplateData map[string]string

TemplateData contains the values available while rendering an email.

type TemplateDefinition added in v0.20.0

type TemplateDefinition struct {
	Key         domain.EmailTemplate
	DisplayName string
	Description string

	DefaultSubjectTemplate string
	DefaultTextTemplate    string
	DefaultHTMLTemplate    string

	AvailableVariables       []string
	RequiredSubjectVariables []string
	RequiredBodyVariables    []string
	SampleData               TemplateData
}

TemplateDefinition describes one Core-owned transactional email and its fixed operator-editable contract.

func LookupTemplate added in v0.20.0

func LookupTemplate(key domain.EmailTemplate) (TemplateDefinition, error)

LookupTemplate returns the definition for a Core-owned email template.

func TemplateCatalog added in v0.20.0

func TemplateCatalog() []TemplateDefinition

TemplateCatalog returns all supported email definitions in display order.

type TemplateErrorLocation added in v0.20.0

type TemplateErrorLocation struct {
	Part TemplatePart
	Line int
}

func LocateTemplateError added in v0.20.0

func LocateTemplateError(err error) (TemplateErrorLocation, bool)

type TemplateOverrideStore added in v0.20.0

type TemplateOverrideStore interface {
	GetEmailTemplateOverride(context.Context, domain.EmailTemplate) (domain.EmailTemplateOverride, error)
	ListEmailTemplateOverrides(context.Context) ([]domain.EmailTemplateOverride, error)
	GetEmailTemplateVersion(context.Context, domain.EmailTemplate, int64) (domain.EmailTemplateVersion, error)
	ListEmailTemplateVersions(context.Context, domain.EmailTemplate) ([]domain.EmailTemplateVersion, error)
	UpsertEmailTemplateOverride(context.Context, domain.EmailTemplateOverride, int64) (domain.EmailTemplateOverride, error)
	DeleteEmailTemplateOverride(context.Context, domain.EmailTemplate, int64, uuid.UUID) error
	ListOperatorAuditEvents(context.Context, store.OperatorAuditEventFilter) ([]domain.OperatorAuditEvent, error)
}

type TemplatePart added in v0.20.0

type TemplatePart string
const (
	TemplatePartSubject TemplatePart = "subject"
	TemplatePartText    TemplatePart = "text"
	TemplatePartHTML    TemplatePart = "html"
)

type TemplateService added in v0.20.0

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

TemplateService resolves, validates, and renders operator-managed template overrides for previews and outgoing email delivery.

func NewTemplateService added in v0.20.0

func NewTemplateService(store TemplateOverrideStore) *TemplateService

func (*TemplateService) DeleteOverride added in v0.20.0

func (s *TemplateService) DeleteOverride(
	ctx context.Context,
	key domain.EmailTemplate,
	expectedRevision int64,
	updatedByUserID uuid.UUID,
) error

func (*TemplateService) Get added in v0.20.0

func (*TemplateService) GetVersion added in v0.20.0

func (*TemplateService) History added in v0.20.0

func (*TemplateService) List added in v0.20.0

func (*TemplateService) ListAuditEvents added in v0.20.0

func (s *TemplateService) ListAuditEvents(ctx context.Context, query OperatorAuditQuery) (OperatorAuditPage, error)

func (*TemplateService) Preview added in v0.20.0

func (*TemplateService) Render added in v0.20.0

func (*TemplateService) SaveOverride added in v0.20.0

type TemplateSource added in v0.20.0

type TemplateSource string
const (
	TemplateSourceBuiltIn  TemplateSource = "built_in"
	TemplateSourceOverride TemplateSource = "override"
)

Jump to

Keyboard shortcuts

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