emailcfg

package
v2.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2026 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// ProviderSendgrid represents SendGrid.
	ProviderSendgrid = "sendgrid"
	// ProviderMailgun represents Mailgun.
	ProviderMailgun = "mailgun"
	// ProviderMailjet represents Mailjet.
	ProviderMailjet = "mailjet"
	// ProviderResend represents Resend.
	ProviderResend = "resend"
	// ProviderPostmark represents Postmark.
	ProviderPostmark = "postmark"
)

Variables

View Source
var (
	// Providers are what we provide to dependency injection.
	Providers = wire.NewSet(
		ProvideEmailer,
	)
)

Functions

func ProvideEmailer

func ProvideEmailer(ctx context.Context, cfg *Config, logger logging.Logger, tracerProvider tracing.TracerProvider, metricsProvider metrics.Provider, client *http.Client) (email.Emailer, error)

ProvideEmailer provides an email.Emailer from a config.

func RegisterEmailer

func RegisterEmailer(i do.Injector)

RegisterEmailer registers an email.Emailer with the injector.

Types

type Config

type Config struct {
	Sendgrid                            *sendgrid.Config       `env:"init"                                    envPrefix:"SENDGRID_"                      json:"sendgrid"`
	Mailgun                             *mailgun.Config        `env:"init"                                    envPrefix:"MAILGUN_"                       json:"mailgun"`
	Mailjet                             *mailjet.Config        `env:"init"                                    envPrefix:"MAILJET_"                       json:"mailjet"`
	Resend                              *resend.Config         `env:"init"                                    envPrefix:"RESEND_"                        json:"resend"`
	Postmark                            *postmark.Config       `env:"init"                                    envPrefix:"POSTMARK_"                      json:"postmark"`
	Provider                            string                 `env:"PROVIDER"                                json:"provider"`
	BaseURL                             template.URL           `env:"BASE_URL"                                json:"baseURL"`
	OutboundInvitesEmailAddress         string                 `env:"OUTBOUND_INVITES_EMAIL_ADDRESS"          json:"outboundInvitesEmailAddress"`
	PasswordResetCreationEmailAddress   string                 `env:"PASSWORD_RESET_CREATION_EMAIL_ADDRESS"   json:"passwordResetCreationEmailAddress"`
	PasswordResetRedemptionEmailAddress string                 `env:"PASSWORD_RESET_REDEMPTION_EMAIL_ADDRESS" json:"passwordResetRedemptionEmailAddress"`
	CircuitBreaker                      circuitbreaking.Config `env:"init"                                    envPrefix:"CIRCUIT_BREAKING_"              json:"circuitBreakerConfig"`
}

Config is the configuration structure.

func (*Config) BuildHermes

func (cfg *Config) BuildHermes(branding *email.EmailBranding) *hermes.Hermes

BuildHermes builds a Hermes instance for rendering email templates.

func (*Config) EnsureDefaults

func (cfg *Config) EnsureDefaults()

EnsureDefaults sets sensible defaults for zero-valued fields.

func (*Config) ProvideEmailer

func (cfg *Config) ProvideEmailer(logger logging.Logger, tracerProvider tracing.TracerProvider, client *http.Client, circuitBreaker circuitbreaking.CircuitBreaker) (email.Emailer, error)

ProvideEmailer provides an outbound_emailer.

func (*Config) ValidateWithContext

func (cfg *Config) ValidateWithContext(ctx context.Context) error

ValidateWithContext validates a Config.

Jump to

Keyboard shortcuts

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