Enviar y recibir correo con la API Mail

En esta guía se describe cómo usar la API Mail para enviar y recibir correo.

Antes de empezar

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

Enviar correo

La función mail() integrada de PHP puede enviar correos a través de la API Mail de App Engine. Esta opción debería funcionar bien con la mayoría del código actual, siempre que cumpla las restricciones que se indican en la sección Enviar correo.

También puedes hacer llamadas directas a la API Mail:

use google\appengine\api\mail\Message;

// Notice that $image_content_id is the optional Content-ID header value of the
// attachment. Must be enclosed by angle brackets (<>)
$image_content_id = '<image-content-id>';

// Pull in the raw file data of the image file to attach it to the message.
$image_data = file_get_contents('image.jpg');

try {
    $message = new Message();
    $message->setSender('from@example.com');
    $message->addTo('to@example.com');
    $message->setSubject('Example email');
    $message->setTextBody('Hello, world!');
    $message->addAttachment('image.jpg', $image_data, $image_content_id);
    $message->send();
    echo 'Mail Sent';
} catch (InvalidArgumentException $e) {
    echo 'There was an error';
}

Recibir correo

Puedes configurar tu aplicación para que reciba correos en direcciones con el siguiente formato:

anything@appid.appspotmail.com

Para recibir correos, haz lo siguiente:

  1. Habilita el correo entrante en el archivo app.yaml de tu aplicación. Añade lo siguiente a la inbound_services:

    - mail
  2. En el archivo de configuración, crea asignaciones de rutas de URL que representen direcciones de correo a controladores en el código de tu aplicación. El patrón /_ah/mail/.+ coincide con todas las direcciones de correo entrantes:

    - url: /_ah/mail/.+
      script: handle_incoming_email.php
      login: admin
  3. Implementa el código de los controladores que hayas especificado en el código de tu aplicación.

    Puedes leer los datos MIME de php://input y analizar el contenido del correo con Mailparse.