mail

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Nov 28, 2024 License: MIT Imports: 8 Imported by: 2

README

Mailing Module for Golang

A Golang module for sending emails seamlessly using AWS or Send Grid.

Features

  • AWS SES Integration: Send transactional emails via AWS SES.
  • Send Grid Support: Integrate with SendGrid for email delivery.
  • Simple API: Easy-to-use interface for developers.

Installation

Get started by installing the package:

go get github.com/fsobh/mail

Usage

Initialize the Mailer

Before sending emails, configure the mailer with your provider's credentials.

Ensure that the sender email has been verified with its respective provider :
  1. AWS SES guide here
  2. Send Grid guide here
package main

import (
	"fmt"
	"github.com/fsobh/mail"
)

func main() {
	
	/* 
	 Never paste your credentials directly in the code for safety reasons
	 Recommended : Store these in environment variables using [viper](https://github.com/spf13/viper)
	*/
	
	senderEmail := "example@sender.com"
	sesRegion :=  "us-east-1"
	sgAPIKey := "<your-api-key>"
	sgAppName := "<your-app-name>"
	
	//Initialize a new AWS SES mailer
	mailerSES := mail.NewSESSender(sesRegion, senderEmail)
	
	//Initialize a new Send Grid mailer
	mailerSendGrid := mail.NewSendGridSender(sgAPIKey, sgAppName, senderEmail)

	subject := "Email Subject"
	contentHtml := fmt.Sprintf("<h1>Email HTML content</h1>")
	to := []string{"reciever@email.com"}
	cc := []string{"cc@email.com"}
	bcc := []string{"bcc@email.com>"}
	attachments := []string{"../files/example.txt"}

	// SES example
	err := mailerSES.SendMail(subject, contentHtml, to, cc, bcc, nil) //can't do attachments on SES

	if err != nil {
		_ = fmt.Errorf("error sending email via SES: %s", err)
	}
	
        // Send Grid example
	err = mailerSendGrid.SendMail(subject, contentHtml, to, cc, bcc, attachments)

	if err != nil {
		_ = fmt.Errorf("error sending email via Send Grid: %s", err)
	}
	
	fmt.Println("Email sent successfully")

}

License

This project is licensed under the MIT License. See the LICENSE file for details.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type EmailSender

type EmailSender interface {
	SendMail(
		subject string,
		content string,
		to []string,
		cc []string,
		bcc []string,
		attachFiles []string,
	) error
}

func NewSESSender

func NewSESSender(region string, senderEmail string) EmailSender

NewSESSender initializes a new SESSender with optional credentials. If AccessKeyID and SecretKey are empty, the AWS SDK will use the default credentials chain.

func NewSendGridSender

func NewSendGridSender(apiKey string, appName string, appEmail string) EmailSender

NewSendGridSender initializes a new SendGridSender.

type SESSender

type SESSender struct {
	Region      string
	SenderEmail string
}

SESSender implements the EmailSender interface for AWS SES.

func (*SESSender) SendMail

func (s *SESSender) SendMail(
	subject string,
	content string,
	to []string,
	cc []string,
	bcc []string,
	attachFiles []string,
) error

type SendGridSender

type SendGridSender struct {
	APIKey   string
	AppName  string
	AppEmail string
}

SendGridSender implements the EmailSender interface for SendGrid.

func (*SendGridSender) SendMail

func (s *SendGridSender) SendMail(
	subject string,
	content string,
	to []string,
	cc []string,
	bcc []string,
	attachFiles []string,
) error

Jump to

Keyboard shortcuts

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