Categorygithub.com/qor/mailer
modulepackage
0.0.0-20180329083248-0555e49f99ac
Repository: https://github.com/qor/mailer.git
Documentation: pkg.go.dev

# 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: "[email protected]", Name: "jinzhu"}},
		From:        &mail.Address{Address: "[email protected]"},
		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,
	})
}

# Packages

No description provided by the author
No description provided by the author

# Functions

New initialize mailer.

# Structs

Attachment attachment struct.
Config mailer config.
Email email struct.
Mailer mailer struct.
Template email template.

# Interfaces

SenderInterface sender's interface.