Mailit
An email kit for golang to be reused across different projects.
Introduction
Mailit is an easy to use mail library to send emails.
Features
Mailit supports:
- Plain text emails
- Text / HTML template based emails
- Attachments
- Sending emails to multiple recipients
Requirements
- Go 1.5
Documentation
https://pkg.go.dev/github.com/wisdommatt/mailit
We also recommend you use the how to guide on this page because Mailit does basically two things:
- Send Plain Text Emails
- Send Template Based Emails
How To Use Mailit
Feel free to copy and paste the codes
-
Step 1: Initialize a mailer variable and pass in SMTP configs.
Note: This is usually done just once
smtpConf := mailit.SMTPConfig{ Host: "domain.com", Port: 563, Username: "[email protected]", Password: "*********", } mailer := mailit.NewMailer(smtpConf)
-
Step 2: Send email
Sending plain text email
textDep := mailit.TextDependencies{ From: "[email protected]", To: []string{"[email protected]", "[email protected]", "[email protected]"}, Subject: "Welcome to Mailit", Body: "Message Body", Attachments: []string{"attachments/1.txt", "attachments/2.txt"}, } err := mailer.SendText(textDep)
Sending HTML template email
tempDep := mailit.TemplateDependencies{ From: "[email protected]", To: []string{"[email protected]", "[email protected]", "[email protected]"}, Subject: "Welcome to Mailit", ContentType: "text/html", Template: "templates/welcome.html", TemplateData: "Any data", Attachments: []string{"attachments/1.txt", "attachments/2.txt"}, } err := mailer.SendTemplate(tempDep)
Sending Text template email
tempDep := mailit.TemplateDependencies{ From: "[email protected]", To: []string{"[email protected]", "[email protected]", "[email protected]"}, Subject: "Welcome to Mailit", ContentType: "text/plain", Template: "templates/sample.txt", TemplateData: struct{ Name, Email string }{ Name: "Wisdom Matt", Email: "[email protected]", }, Attachments: []string{"attachments/1.txt", "attachments/2.txt"}, } err := mailer.SendTemplate(tempDep)
NOTE: You will access the template data the way it is access usually in Go templates e.g {{ .Name }} or {{ .Email }}
Dependencies
Testing
This package uses manual testing because the gomail package which it depends on used core types instead of interfaces which in turn makes it difficult to test, a thorough test is done before any changed is made on the project so there is nothing to be scared of.
License
Author / Contact
Wisdom Matthew - github.com/wisdommatt
Feel free to email me at [email protected]