Enviar correo electrónico con Mailgun

La API de Mailgun está compilada en HTTP y es RESTful. Usa URL predecibles y orientadas a los recursos, y capacidades HTTP integradas para pasar parámetros y autenticación. La API de Mailgun responde con códigos de respuesta HTTP estándares para indicar errores y muestra JSON.

Mailgun publicó bibliotecas para varios lenguajes. Puedes usar estas bibliotecas o tu biblioteca HTTP/REST favorita a fin de hacer llamadas HTTP a Mailgun.

Para ver más muestras de códigos en otros lenguajes de programación, consulta la documentación de Mailgun.

Precios

Como usuario de Google Cloud Platform, tus primeros 30,000 mensajes de cada mes son gratuitos. Consulta la calculadora de precios mensuales en la página de registro para conocer los precios de los mensajes adicionales y los descuentos por volumen.

Configuración

  • La biblioteca mailgun-go proporciona una interfaz que facilita la interacción con la API de Mailgun. Para instalar la biblioteca, ejecuta:

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

Cómo enviar un correo electrónico de texto sin formato

func SendSimpleMessageHandler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	httpc := urlfetch.Client(ctx)

	mg := mailgun.NewMailgun(
		"YOUR_DOMAIN_NAME", // Domain name
		"YOUR_API_KEY",     // API Key
		"YOUR_PUBLIC_KEY",  // Public Key
	)
	mg.SetClient(httpc)

	msg, id, err := mg.Send(mg.NewMessage(
		/* From */ "Excited User <mailgun@YOUR_DOMAIN_NAME>",
		/* Subject */ "Hello",
		/* Body */ "Testing some Mailgun awesomness!",
		/* To */ "bar@example.com", "YOU@YOUR_DOMAIN_NAME",
	))
	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!"))
}

Cómo enviar un correo electrónico de texto y HTML

Envío de un mensaje con partes de texto y HTML. En este ejemplo, también se adjuntan archivos al mensaje:

func SendComplexMessageHandler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	httpc := urlfetch.Client(ctx)

	mg := mailgun.NewMailgun(
		"YOUR_DOMAIN_NAME", // Domain name
		"YOUR_API_KEY",     // API Key
		"YOUR_PUBLIC_KEY",  // Public Key
	)
	mg.SetClient(httpc)

	message := mg.NewMessage(
		/* From */ "Excited User <mailgun@YOUR_DOMAIN_NAME>",
		/* 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.AddAttachment("files/test.jpg")
	message.AddAttachment("files/test.txt")

	msg, id, err := mg.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!"))
}

Respuesta de muestra:

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

Más información

Si deseas obtener más información y ejemplos detallados, como el procedimiento para rastrear y enrutar mensajes, consulta la documentación de Mailgun.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Go