Skip to content

A mailer that reads from a RabbitMQ queue and generates messages from Markdown templates.

License

Notifications You must be signed in to change notification settings

hyperboloide/qmail

Repository files navigation

qmail

Build Status GoDoc

A mailer that reads from a RabbitMQ queue and generates messages from Markdown templates.

This project has a client and a server.

Client

To send email you need to create and instance of the client.Mailer.

Start by importing the client package:

import "github.com/hyperboloide/qmail/client"

Then connect to the queue and send an email:

mailer, err := client.New("mails", "amqp://guest:guest@rabbitmq:5672/")

if err != nil {
	log.Fatal(err)
}

email := client.Mail{
	Dests:    []string{"dest@example.com"},
	Subject:  "test",
	Template: "example_template",
	Data:     map[string]string{"User": "test user"},
	Files:    []string{"/myfiles/some_file.txt"},
}

if err := mailer.Send(email); err != nil {
	log.Fatal(err)
}

Server

The server is available as a Docker container

docker pull hyperboloide/qmail

All configuration options are passed as environment variables:

docker run \
	-v ~/templates:/templates \
    -v ~/myfiles:/myfiles \
	-link rabbitmq:rabbitmq \
	-e TEMPLATES=/templates/*.md \
	-e QUEUE_NAME=mails \
	-e QUEUE_HOST=amqp://guest:guest@rabbitmq:5672/ \
	-e SMTP_HOST=smtp.example.com \
	-e SMTP_PORT=465 \
	-e SMTP_USER=user@example.com \
	-e SMTP_PASSWORD=password \
	-e SENDER="Example User <user@example.com>" \
	hyperboloide/qmail

Note that if you want to send files you need to mount them in a Docker volume (here the volume myfiles).

About

A mailer that reads from a RabbitMQ queue and generates messages from Markdown templates.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published