mailer

package module
v0.0.0-...-0555e49 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2018 License: MIT Imports: 6 Imported by: 63

README

Mailer

Mail solution

Usage

Initailize Mailer

Mailer will support multiple sender adaptors, it works similar, you need to initialize a Mailer first, then use it to send emails.

Here is how to use gomail to send emails

import (
	"github.com/qor/mailer"
	"github.com/qor/mailer/gomailer"
	"github.com/go-gomail/gomail"
)

func main() {
	// Config gomail
	dailer := gomail.NewDialer("smtp.example.com", 587, "user", "123456")
	sender, err := dailer.Dial()

	// Initialize Mailer
	Mailer := mailer.New(&mailer.Config{
		Sender: gomailer.New(&gomailer.Config{Sender: sender}),
	})
}
Sending Emails
import "net/mail"

func main() {
	Mailer.Send(mailer.Email{
		TO:          []mail.Address{{Address: "jinzhu@example.org", Name: "jinzhu"}},
		From:        &mail.Address{Address: "jinzhu@example.org"},
		Subject:     "subject",
		Text:        "text email",
		HTML:        "html email <img src='cid:logo.png'/>",
		Attachments: []mailer.Attachment{{FileName: "gomail.go"}, {FileName: "../test/logo.png", Inline: true}},
	})
}
Sending Emails with templates

Mailer is using Render to render email templates and layouts, please refer it for How-To.

Emails could have HTML and text version, when sending emails,

It will look up template hello.html.tmpl and layout application.html.tmpl from view paths, and render it as HTML version's content, and use template hello.text.tmpl and layout application.text.tmpl as text version's content.

If we haven't find the layout file, we will only render template as the content, and if we haven't find template, we will just skip that version, for example, if hello.text.tmpl doesn't exist, we will only send the HTML version.

Mailer.Send(
	mailer.Email{
		TO:      []mail.Address{{Address: Config.DefaultTo}},
		From:    &mail.Address{Address: Config.DefaultFrom},
		Subject: "hello",
	},
	mailer.Template{Name: "hello", Layout: "application", Data: currentUser},
)
Mailer View Paths

All templates and layouts should be located in app/views/mailers, but you could change or register more paths by customizing Mailer's AssetFS.

import "github.com/qor/assetfs"

func main() {
	assetFS := assetfs.AssetFS().NameSpace("mailer")
	assetFS.RegisterPath("mailers/views")

	Mailer := mailer.New(&mailer.Config{
		Sender: gomailer.New(&gomailer.Config{Sender: sender}),
		AssetFS: assetFS,
	})
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Attachment

type Attachment struct {
	FileName string
	Inline   bool
}

Attachment attachment struct

type Config

type Config struct {
	DefaultEmailTemplate *Email
	AssetFS              assetfs.Interface
	Sender               SenderInterface
	*render.Render
}

Config mailer config

type Email

type Email struct {
	TO, CC, BCC   []mail.Address
	From, ReplyTo *mail.Address
	Subject       string
	Headers       mail.Header
	Attachments   []Attachment
	Text          string // text email content
	HTML          string // html email content
}

Email email struct

func (Email) Merge

func (email Email) Merge(e Email) Email

Merge merge email struct and create a new one

type Mailer

type Mailer struct {
	*Config
}

Mailer mailer struct

func New

func New(config *Config) *Mailer

New initialize mailer

func (Mailer) Render

func (mailer Mailer) Render(t Template) Email

Render render template

func (Mailer) Send

func (mailer Mailer) Send(email Email, templates ...Template) error

Send send email

type SenderInterface

type SenderInterface interface {
	Send(Email) error
}

SenderInterface sender's interface

type Template

type Template struct {
	Name    string
	Layout  string
	Data    interface{}
	Request *http.Request
	Writer  http.ResponseWriter
	// contains filtered or unexported fields
}

Template email template

func (Template) Funcs

func (tmpl Template) Funcs(funcMap template.FuncMap) Template

Funcs set template's funcs

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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