Skip to content

mattevans/postmark-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

58097da · Nov 21, 2023

History

53 Commits
Nov 21, 2023
Oct 31, 2021
Nov 1, 2022
Sep 22, 2016
Nov 21, 2023
Sep 22, 2016
Nov 2, 2017
Nov 1, 2022
Oct 31, 2021
Nov 21, 2023
Nov 21, 2023
Nov 2, 2017

Repository files navigation

postmark-go

GoDoc Build Status license

postmark-go is a Go client library for accessing the Postmark API (http://developer.postmarkapp.com/).

This is an unofficial library that is not affiliated with Postmark. Official libraries are available here.

v1.0 Breaking Changes

The signature of NewClient has changed. It now accepts options, one of which can be a custom HTTP client. Please pin to an older version if required.

Installation

go get -u github.com/mattevans/postmark-go

Setup

You'll need to pass an SERVER_API_TOKEN when initializing the client. This token can be found under the 'Credentials' tab of your Postmark server. More info here.

Client + Authentication

client := postmark.NewClient(
    postmark.WithClient(&http.Client{
        Transport: &postmark.AuthTransport{Token: "SERVER_API_TOKEN"},
    }),
)

Example usage (with Template)

emailReq := &postmark.Email{
  From:       "mail@company.com",
  To:         "jack@sparrow.com",
  TemplateID: 123456,
  TemplateModel: map[string]interface{}{
    "name": "Jack",
    "action_url": "http://click.company.com/welcome",
  },
  Tag:        "onboarding",
  TrackOpens: true,
  Metadata: map[string]string{
    "client-id": "123456",
    "client-ip": "127.0.0.1",
  },
}

email, response, err := client.Email.Send(emailReq)
if err != nil {
  return err
}

Example usage (with HtmlBody)

emailReq := &postmark.Email{
  From:       "mail@company.com",
  To:         "jack@sparrow.com",
  Subject:    "My Test Email",
  HtmlBody:   "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
  TextBody:   "Hello dear Postmark user",
  Tag:        "onboarding",
  TrackOpens: true,
  Metadata: map[string]string{
    "client-id": "123456",
    "client-ip": "127.0.0.1",
  },
}

email, response, err := client.Email.Send(emailReq)
if err != nil {
  return err
}

What's Implemented?

At the moment only a handful of the more common endpoints have been implemented. Open an issue (or PR) if you required something that's missing.

Thanks & Acknowledgements 👌

The packages's architecture is adapted from go-github, created by Will Norris. 🍻