mailit

An email kit for golang to be reused across different projects.

MIT License

Stars
6

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

MIT

Author / Contact

Wisdom Matthew - github.com/wisdommatt

Feel free to email me at [email protected]