Skip to content

Go Mail API is a simple REST API for sending email notifications via SMTP.

Notifications You must be signed in to change notification settings

braveokafor/go-mail-api

Repository files navigation

Go Mail API

Build Status Release Status Repo size Image size Docker Pulls

Overview

Go Mail API is a simple REST API for sending email notifications via SMTP.

Features

  • Send emails using SMTP.
  • Configurable SMTP settings.
  • Support for environment variables and command-line flags for configuration.

Installation

Download the appropriate binary for your operating system from the GitHub Releases page.

Configuration

The Go Mail API can be configured using environment variables or command-line flags. The following options are available:

Environment Variable Command-Line Flag Description Default Value
MAIL_API_PORT --api-port Port for the API server 8080
MAIL_SMTP_PORT --smtp-port Port for the SMTP server 25
MAIL_SMTP_HOST --smtp-host Host for the SMTP server (required)
MAIL_SMTP_USER --smtp-user User for the SMTP server (required)
MAIL_SMTP_PASS --smtp-pass Password for the SMTP server (required)
MAIL_SMTP_USE_TLS --smtp-use-tls Use TLS for the SMTP server false

Make sure to set the required configuration values (MAIL_SMTP_HOST, MAIL_SMTP_USER, MAIL_SMTP_PASS) either through environment variables or command-line flags.

API Documentation

Send Email

Send an email using the Go Mail API.

  • URL: /send
  • Method: POST

Request Body

Field Type Required Description
from string Yes The email address of the sender.
to array of strings Yes The email addresses of the recipients.
cc array of strings No The email addresses of the CC recipients.
bcc array of strings No The email addresses of the BCC recipients.
subject string Yes The subject of the email.
priority string No The priority of the email (e.g., "high", "normal", "low").
headers object No Additional headers to include in the email.
text string No The plain text version of the email body.
html string No The HTML version of the email body.
attachments array of attachment objects No Attachments to include in the email.
Attachment Object
Field Type Required Description
filename string Yes The name of the attachment file.
content_type string Yes The content type of the attachment.
content string Yes The content of the attachment, either base64-encoded or plain text.
encoded boolean No Indicates whether the content is base64-encoded. Defaults to false.

Response

Status Code Body
200 OK {"message": "Email sent successfully"}

Example

  1. Set the required configuration values:

    export MAIL_SMTP_HOST="smtp.gmail.com"
    export MAIL_SMTP_USER="[email protected]"
    export MAIL_SMTP_PASS="your app password"
  2. Start the Go Mail API server:

    ./go-mail-api --api-port=8080 --smtp-port=587 --smtp-use-tls=true
  3. Send a POST request to the /send endpoint:

    curl -X POST -H "Content-Type: application/json" -d '{
      "from": "[email protected]",
      "to": ["[email protected]", "[email protected]"],
      "subject": "Test Email",
      "priority": "high",
      "html": "<p>This is a <strong>test</strong> email.</p>",
      "attachments": [
        {
          "filename": "example.txt",
          "content_type": "text/plain",
          "content": "VGhpcyBpcyBhbiBleGFtcGxlIGF0dGFjaG1lbnQu",
          "encoded": true
        }
      ]
    }' http://localhost:8080/send

Contributing

Contributions and suggestions are welcome.
Please open an issue for discussion or propose improvements directly through a pull request.

Support & Issues

Issues Issues

For support or reporting issues, please open an issue in the GitHub repository or reach out on LinkedIn.

About

Go Mail API is a simple REST API for sending email notifications via SMTP.

Resources

Stars

Watchers

Forks

Packages