mailer

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2018 License: AGPL-3.0 Imports: 22 Imported by: 0

README

Mailer Service

Generic service to send email. Encapsulates various implementations, currently :

  • SMTP server connection
  • SendMail call to sendmail on the command line
  • SendGrid Call to Sendgrid API

Queue

TODO: a queue mechanism to avoid spamming mail server should be implemented to batch emails.

GRPC and REST Services

A grpc service is used internally by other services to send email, e.g. by the Activity Service when sending user alerts or user digests, or the Scheduler service to send jobs results to Administrator, etc.

A REST service is exposed to the frontend to allow direct communication between users.

Documentation

Overview

Package mailer acts a central mail server for the application.

It implements various types of communication with actual mail servers (sendmail, smtp, sendgrid API) and a simple queue mechanism to avoid spamming these servers.

Index

Constants

View Source
const (
	MaxSendRetries = 5
)

Variables

This section is empty.

Functions

func NewGomailMessage

func NewGomailMessage(email *mailer.Mail) (*gomail.Message, error)

Types

type BoltQueue

type BoltQueue struct {

	// For Testing purpose : delete file after closing
	DeleteOnClose bool
	// Path to the DB file
	DbPath string
	// contains filtered or unexported fields
}

func NewBoltQueue

func NewBoltQueue(fileName string, deleteOnClose ...bool) (*BoltQueue, error)

func (*BoltQueue) Close

func (b *BoltQueue) Close() error

func (*BoltQueue) Consume

func (b *BoltQueue) Consume(mh func(email *mailer.Mail) error) error

func (*BoltQueue) Push

func (b *BoltQueue) Push(email *mailer.Mail) error

type Queue

type Queue interface {
	Push(email *mailer.Mail) error
	Consume(func(email *mailer.Mail) error) error
}

func GetQueue

func GetQueue(ctx context.Context, t string, conf config.Map) Queue

type SendGrid

type SendGrid struct {
	ApiKey string
}

SendGrid is a passerelle to Sendgrid API. It holds the application API Key.

func (*SendGrid) Configure

func (s *SendGrid) Configure(config config.Map) error

Configure expects a valid sendgrid API key.

func (*SendGrid) Send

func (s *SendGrid) Send(email *mailer.Mail) error

Send performs the real code to the sendgrid API.

type Sender

type Sender interface {
	Configure(conf config.Map) error
	Send(email *mailer.Mail) error
}

func GetSender

func GetSender(t string, conf config.Map) (Sender, error)

type Sendmail

type Sendmail struct {
	BinPath string
}

func (*Sendmail) Configure

func (s *Sendmail) Configure(config config.Map) error

func (*Sendmail) Send

func (d *Sendmail) Send(email *mailer.Mail) error

type Smtp

type Smtp struct {
	User     string
	Password string
	Host     string
	Port     int
}

func (*Smtp) Configure

func (gm *Smtp) Configure(config config.Map) error

func (*Smtp) Send

func (gm *Smtp) Send(email *mailer.Mail) error

Directories

Path Synopsis
Package grpc provides the actual logic for posting emails to queue or to mail servers
Package grpc provides the actual logic for posting emails to queue or to mail servers
Package lang provides i18n strings for mailer-related data.
Package lang provides i18n strings for mailer-related data.
Package rest exposes a simple API for posting emails
Package rest exposes a simple API for posting emails
Package templates defines ready-to-use templates to send email in a nice formatting.
Package templates defines ready-to-use templates to send email in a nice formatting.

Jump to

Keyboard shortcuts

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