Envía y recibe correos con la API de correo

Utiliza la API de correo para enviar y recibir correos electrónicos.

Si deseas obtener más información sobre quién puede enviar correos electrónicos y las pautas para enviar correo masivo, consulta la descripción general sobre la API de correo.

Antes de comenzar

Debes registrar los correos electrónicos de tus remitentes como remitentes autorizados. Para obtener más información, consulta quién puede enviar correos electrónicos.

Enviar correos electrónicos

Para enviar un correo electrónico desde la aplicación, realiza los siguientes pasos:

  1. Utiliza el tipo mail.Message para configurar el remitente, destinatario, asunto y cuerpo del mensaje.

  2. Envía el correo electrónico con la función mail.Send.

En el siguiente ejemplo, se envía un mensaje de correo electrónico al usuario como confirmación de que creó una cuenta nueva con la aplicación:

import (
	"bytes"
	"fmt"
	"net/http"

	"google.golang.org/appengine"
	"google.golang.org/appengine/log"
	"google.golang.org/appengine/mail"
)

func confirm(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	addr := r.FormValue("email")
	url := createConfirmationURL(r)
	msg := &mail.Message{
		Sender:  "Example.com Support <support@example.com>",
		To:      []string{addr},
		Subject: "Confirm your registration",
		Body:    fmt.Sprintf(confirmMessage, url),
	}
	if err := mail.Send(ctx, msg); err != nil {
		log.Errorf(ctx, "Couldn't send email: %v", err)
	}
}

const confirmMessage = `
Thank you for creating an account!
Please confirm your email address by clicking on the link below:

%s
`

Cómo recibir correos electrónicos

Puedes configurar la aplicación para que reciba correos electrónicos entrantes en las direcciones con el siguiente formato:

anything@appid.appspotmail.com

Para recibir correos electrónicos, realiza los siguientes pasos:

  1. Habilita el correo electrónico entrante en el archivo app.yaml de tu aplicación:

    inbound_services:
    - mail
  2. Configura un controlador para procesar los correos electrónicos entrantes, que se suministran a la aplicación como datos MIME en una solicitud POST HTTP.

    1. En la aplicación, registra un controlador para la ruta de acceso /_ah/mail/:

      func init() {
      	http.HandleFunc("/_ah/mail/", incomingMail)
      }
      
    2. En el controlador, lee los datos del correo electrónico desde *http.Request:

      func incomingMail(w http.ResponseWriter, r *http.Request) {
      	ctx := appengine.NewContext(r)
      	defer r.Body.Close()
      	var b bytes.Buffer
      	if _, err := b.ReadFrom(r.Body); err != nil {
      		log.Errorf(ctx, "Error reading body: %v", err)
      		return
      	}
      	log.Infof(ctx, "Received mail: %v", b)
      }
      

    Puedes usar el paquete net/mail de la biblioteca estándar para analizar los mensajes de correo electrónico.

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

Enviar comentarios sobre...

Entorno estándar de App Engine para Go