Como enviar e-mails com o Mailgun

A API Mailgun é RESTful e baseada em HTTP. Ela usa URLs previsíveis e orientadas por recursos, além de funções HTTP integradas, para transmitir parâmetros e autenticação. A Mailgun API responde com códigos HTTP padrão para indicar erros e retorna JSON.

O Mailgun publicou bibliotecas em várias linguagens. Use essas ou sua biblioteca HTTP/REST favorita para fazer chamadas HTTP para o Mailgun.

Para ver mais amostras de código em outras linguagens de programação, consulte a documentação do Mailgun.

Preços

Como usuário do Google Cloud Platform, as primeiras 30 mil mensagens são gratuitas todos os meses. Consulte a calculadora de preços mensais na página de inscrição para ver os preços de mais mensagens e descontos por volume.

Configurar

  • A biblioteca mailgun-go fornece uma interface para interagir facilmente com a Mailgun API. Para instalar a biblioteca, execute:

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

Exemplos

Como enviar uma mensagem de texto simples:

func sendSimpleMessageHandler(w http.ResponseWriter, r *http.Request) {
	msg, id, err := mailgunClient.Send(mailgunClient.NewMessage(
		/* From */ fmt.Sprintf("Excited User <mailgun@%s>", mailgunDomain),
		/* Subject */ "Hello",
		/* Body */ "Testing some Mailgun awesomness!",
		/* To */ "bar@example.com", "YOU@"+mailgunDomain,
	))
	if err != nil {
		msg := fmt.Sprintf("Could not send message: %v, ID %v, %+v", err, id, msg)
		http.Error(w, msg, http.StatusInternalServerError)
		return
	}

	w.Write([]byte("Message sent!"))
}

Como enviar uma mensagem com HTML e texto. Este exemplo também anexa arquivos à mensagem:

func sendComplexMessageHandler(w http.ResponseWriter, r *http.Request) {
	message := mailgunClient.NewMessage(
		/* From */ fmt.Sprintf("Excited User <mailgun@%s>", mailgunDomain),
		/* Subject */ "Hello",
		/* Body */ "Testing some Mailgun awesomness!",
		/* To */ "foo@example.com",
	)
	message.AddCC("baz@example.com")
	message.AddBCC("bar@example.com")
	message.SetHtml("<html>HTML version of the body</html>")
	message.AddReaderAttachment("files/test.txt",
		ioutil.NopCloser(strings.NewReader("foo")))

	msg, id, err := mailgunClient.Send(message)
	if err != nil {
		msg := fmt.Sprintf("Could not send message: %v, ID %v, %+v", err, id, msg)
		http.Error(w, msg, http.StatusInternalServerError)
		return
	}

	w.Write([]byte("Message sent!"))
}

Amostra de resposta:

{
    "message": "Queued. Thank you.",
    "id": "<20111114174239.25659.5817@samples.mailgun.org>"
}

Saiba mais

Para ver exemplos e informações mais detalhadas, incluindo como rastrear e encaminhar mensagens, consulte a documentação do Mailgun.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente flexível do App Engine para Go