SparkPost client library for the Go Programming Language
Go
Switch branches/tags
Nothing to show
Latest commit 7e8565c Jun 13, 2017 @yargevad yargevad committed on GitHub Merge pull request #112 from alexandrevez/master
Added json tag to From struct
Permalink
Failed to load latest commit information.
cmd switch `sparks` command line tool to use new option convention Mar 30, 2017
events Remove ErrWebhookValidation (see #52) May 14, 2016
examples more on the "why" of cc and bcc Jun 3, 2016
helpers/loadmsg remove dkim from message loading helper Jul 28, 2016
test missing test files Apr 26, 2017
.gitignore Adding suppression list cursor abstractions and more unit tests for s… Apr 4, 2017
.travis.yml multiple patterns should be comma-separated Mar 31, 2017
AUTHORS.rst Issue # 26: Fixes problem where Timestamp was getting decoded as int6… Feb 11, 2016
CONTRIBUTING.md Fixes some typo for branching project Feb 11, 2016
LICENSE apache 2.0 license, with message systems copyright Oct 6, 2015
README.rst Adds code coverage to README for Issue #11 Mar 31, 2017
common.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
common_test.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
del_metrics.go the rest of the "context in its own param" changes Feb 18, 2017
del_metrics_test.go assert that we have the expected number of errors Jan 20, 2017
event_docs.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
event_docs_test.go the rest of the "context in its own param" changes Feb 18, 2017
message_events.go the rest of the "context in its own param" changes Feb 18, 2017
message_events_test.go move params and context into `EventPage`; pass context through to htt… Jan 20, 2017
recipient_lists.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
recipient_lists_test.go test that `[]RecipientList` is parsed as expected Apr 13, 2017
subaccounts.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
subaccounts_test.go remove some more client-side checks, in favor of what the server retu… Apr 17, 2017
suppression_list.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
suppression_list_test.go move json files into a subdirectory under `test` Apr 11, 2017
templates.go Added json tag to From struct Jun 8, 2017
templates_test.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
transmissions.go factor out repeated error handling code; convert TestDoRequest to a t… Apr 25, 2017
transmissions_test.go merge master Mar 31, 2017
webhooks.go update comments to clarify that the function argument is updated, ins… Apr 27, 2017
webhooks_test.go tests for WebhookDetail, Webhooks; add some sleight of hand to make h… Apr 26, 2017

README.rst

Sign up for a SparkPost account and visit our Developer Hub for even more content.

SparkPost Go API client

Build Status Code Coverage Slack Community

The official Go package for using the SparkPost API.

Installation

Install from GitHub using go get:

$ go get github.com/SparkPost/gosparkpost

Get a key

Go to API & SMTP in the SparkPost app and create an API key. We recommend using the SPARKPOST_API_KEY environment variable. The example code below shows how to set this up.

Send a message

Here at SparkPost, our "send some messages" api is called the transmissions API - let's use it to send a friendly test message:

package main

import (
  "log"
  "os"

  sp "github.com/SparkPost/gosparkpost"
)

func main() {
  // Get our API key from the environment; configure.
  apiKey := os.Getenv("SPARKPOST_API_KEY")
  cfg := &sp.Config{
    BaseUrl:    "https://api.sparkpost.com",
    ApiKey:     apiKey,
    ApiVersion: 1,
  }
  var client sp.Client
  err := client.Init(cfg)
  if err != nil {
    log.Fatalf("SparkPost client init failed: %s\n", err)
  }

  // Create a Transmission using an inline Recipient List
  // and inline email Content.
  tx := &sp.Transmission{
    Recipients: []string{"someone@somedomain.com"},
    Content: sp.Content{
      HTML:    "<p>Hello world</p>",
      From:    "test@sparkpostbox.com",
      Subject: "Hello from gosparkpost",
    },
  }
  id, _, err := client.Send(tx)
  if err != nil {
    log.Fatal(err)
  }

  // The second value returned from Send
  // has more info about the HTTP response, in case
  // you'd like to see more than the Transmission id.
  log.Printf("Transmission sent with id [%s]\n", id)
}

Documentation

Contribute

TL;DR:

  1. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
  2. Fork the repository.
  3. Go get the original code - go get https://github.com/SparkPost/gosparkpost
  4. Add your fork as a remote - git remote add fork http://github.com/YOURID/gosparkpost
  5. Make your changes in a branch on your fork
  6. Write a test which shows that the bug was fixed or that the feature works as expected.
  7. Push your changes - git push fork HEAD
  8. Send a pull request. Make sure to add yourself to AUTHORS.

More on the contribution process