Categorygithub.com/parslylabs/mailgun-go
modulepackage
2.0.0+incompatible
Repository: https://github.com/parslylabs/mailgun-go.git
Documentation: pkg.go.dev

# README

Mailgun with Go

GoDoc

Go library for interacting with the Mailgun API.

NOTE: Backward compatability has been broken with the v2.0 release. Pin your dependencies to the v1.1.1 tag if you are not ready for v2.0

Sending mail via the mailgun CLI

Export your API keys and domain

$ export MG_API_KEY=your-api-key
$ export MG_DOMAIN=your-domain
$ export MG_PUBLIC_API_KEY=your-public-key
$ export MG_URL="https://api.mailgun.net/v3"

Send an email

$ echo -n 'Hello World' | mailgun send -s "Test subject" [email protected]

Sending mail via the golang library


package main

import (
    "fmt"
    "log"
    "github.com/mailgun/mailgun-go"
)

// Your available domain names can be found here:
// (https://app.mailgun.com/app/domains)
var yourDomain string = "your-domain-name" // e.g. mg.yourcompany.com

// The API Keys are found in your Account Menu, under "Settings":
// (https://app.mailgun.com/app/account/security)

// starts with "key-"
var privateAPIKey string = "your-private-key"


func main() {
    // Create an instance of the Mailgun Client
    mg := mailgun.NewMailgun(yourDomain, privateAPIKey)

    sender := "[email protected]"
    subject := "Fancy subject!"
    body := "Hello from Mailgun Go!"
    recipient := "[email protected]"

    sendMessage(mg, sender, subject, body, recipient)
}

func sendMessage(mg mailgun.Mailgun, sender, subject, body, recipient string) {
    message := mg.NewMessage(sender, subject, body, recipient)
    resp, id, err := mg.Send(message)

    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("ID: %s Resp: %s\n", id, resp)
}

Email Validations

package main

import (
    "fmt"
    "github.com/mailgun/mailgun-go"
    "log"
)

// If your plan does not include email validations but you have an account,
// use your public api key (starts with "pubkey-"). If your plan does include
// email validations, use your private api key (starts with "key-")
var apiKey string = "your-key"

func main() {
    // Create an instance of the Validator
    v := mailgun.NewEmailValidator(apiKey)

    v.ValidateEmail("[email protected]", false)
}

Installation

Install the go library

$ go get github.com/mailgun/mailgun-go

Install the mailgun CLI


$ go install github.com/mailgun/mailgun-go/cmd/mailgun/./...

Testing

WARNING - running the tests will cost you money!

To run the tests various environment variables must be set. These are:

  • MG_DOMAIN is the domain name - this is a value registered in the Mailgun admin interface.
  • MG_PUBLIC_API_KEY is the public API key - you can get this value from the Mailgun admin interface.
  • MG_API_KEY is the (private) API key - you can get this value from the Mailgun admin interface.
  • MG_EMAIL_TO is the email address used in various sending tests.

and finally

  • MG_SPEND_MONEY if this value is set the part of the test that use the API to actually send email will be run - be aware this will count on your quota and this will cost you money.

The code is released under a 3-clause BSD license. See the LICENSE file for more information.

# Packages

No description provided by the author

# Functions

Extract the http status code from error object.
Creates a new validation instance.
Return a new EmailValidator using environment variables If MG_PUBLIC_API_KEY is set, assume using the free validation subject to daily usage limits If only MG_API_KEY is set, assume using the /private validation routes with no daily usage limits.
NewMailGun creates a new client instance.
Return a new Mailgun client using the environment variables MG_API_KEY, MG_DOMAIN, and MG_URL.
NewMessage returns a new e-mail message with the simplest envelop needed to send.
NewMIMEMessage creates a new MIME message.
Creates a new cursor from a taglist.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
DefaultLimit and DefaultSkip instruct the SDK to rely on Mailgun's reasonable defaults for Paging settings.
DefaultLimit and DefaultSkip instruct the SDK to rely on Mailgun's reasonable defaults for Paging settings.
Disabled, Tag, and Delete indicate spam actions.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Disabled, Tag, and Delete indicate spam actions.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
A mailing list may have one of three membership modes.
The MailgunGoUserAgent identifies the client to the server, for logging purposes.
MaxNumberOfRecipients represents the largest batch of recipients that Mailgun can support in a single API call.
A mailing list may have one of three membership modes.
No description provided by the author
No description provided by the author
No description provided by the author
A mailing list may have one of three membership modes.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Disabled, Tag, and Delete indicate spam actions.
No description provided by the author
No description provided by the author
No description provided by the author

# Variables

Mailing list members have an attribute that determines if they've subscribed to the mailing list or not.
No description provided by the author
ENV is used to help switch settings based on where the application is being run.
ErrEmptyParam results occur when a required parameter is missing.
Mailing list members have an attribute that determines if they've subscribed to the mailing list or not.
Mailing list members have an attribute that determines if they've subscribed to the mailing list or not.

# Structs

No description provided by the author
No description provided by the author
Bounce aggregates data relating to undeliverable messages to a specific intended recipient, identified by Address.
No description provided by the author
No description provided by the author
Complaint structures track how many times one of your emails have been marked as spam.
A Credential structure describes a principle allowed to send or receive mail at the domain.
No description provided by the author
No description provided by the author
DNSRecord structures describe intended records to properly configure your domain for use with Mailgun.
A Domain structure holds information about a domain used when sending mail.
No description provided by the author
EmailVerification records basic facts about a validated e-mail address.
The EmailVerificationParts structure breaks out the basic elements of an email address.
No description provided by the author
No description provided by the author
No description provided by the author
EventIterator maintains the state necessary for paging though small parcels of a larger set of events.
No description provided by the author
EventPoller maintains the state necessary for polling events.
GetEventsOptions lets the caller of GetEvents() specify how the results are to be returned.
No description provided by the author
No description provided by the author
Depreciated See `ListEvents()`.
A List structure provides information for a mailing list.
MailgunImpl bundles data needed by a large number of methods in order to interact with the Mailgun API.
No description provided by the author
No description provided by the author
No description provided by the author
A Member structure represents a member of the mailing list.
Message structures contain both the message text and the envelop for an e-mail message.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
A Route structure contains information on a configured or to-be-configured route.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
StoredAttachment structures contain information on an attachment associated with a stored message.
StoredMessage structures contain the (parsed) message content for an email sent to a Mailgun account.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
This error will be returned whenever a Mailgun API returns an error response.
No description provided by the author

# Interfaces

No description provided by the author
Mailgun defines the supported subset of the Mailgun API.

# Type aliases

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author