Los mensajes de correo electrónico se envían a tu app como solicitudes de HTTP. A fin de procesar los mensajes de correo electrónico entrantes, debes asociar las direcciones de correo electrónico con los servlets en la configuración de tu aplicación y, luego, incluir el código del servlet en tu app. El correo electrónico entrante genera solicitudes HTTP que se pasan a los servlets adecuados para su control.
Configura tu aplicación para recibir correos electrónicos
Cuando creas una aplicación nueva, el correo electrónico entrante está inhabilitado de manera predeterminada. Si no lo habilitas de forma explícita, se ignoran los mensajes de correo electrónico entrantes que se enviaron a la app.
Para habilitar el servicio de correo electrónico entrante, modifica los archivos de configuración appengine-web.xml
y web.xml
:
Habilita el correo electrónico en appengine-web.xml
Para modificar appengine-web.xml
, agrega una sección inbound-services
que habilite el servicio de correo electrónico entrante:
Los mensajes de correo electrónico se envían a tu app como solicitudes HTTP POST mediante la siguiente URL:
/_ah/mail/<ADDRESS>
En el ejemplo anterior, <ADDRESS>
es una dirección de correo electrónico completa que incluye el nombre de dominio. Ten en cuenta que, incluso si se implementa en un dominio personalizado, tu app no puede recibir correos electrónicos enviados a direcciones de ese dominio.
Habilita el correo electrónico en web.xml
Para modificar web.xml
, mapea las URL de correo electrónico a servlets:
En los fragmentos anteriores, /_ah/mail/*
coincide con todos los correos electrónicos dirigidos a la app. Los servlets de correo electrónico se ejecutan en la versión actual de la app en App Engine.
Envío de mensajes entrantes basado en patrones
Si tu aplicación utiliza la comparación de patrones, considera usar un enfoque basado en filtros en función de los siguientes fragmentos de código.
Controlador concreto
El controlador concreto anterior se registra mediante el siguiente fragmento en web.xml
:
Ten en cuenta que no es posible agregar directivas security-constraint
en los filtros; las políticas de seguridad del controlador deberán incorporarse de otra manera.
Controlador abstracto
Controla el correo electrónico entrante
La API de JavaMail incluye la clase MimeMessage
que puedes usar para analizar los mensajes de correo electrónico entrantes. MimeMessage
tiene un constructor que acepta una java.io.InputStream
y una sesión de JavaMail, que puede tener una configuración vacía.
Crea una instancia MimeMessage
de la siguiente manera:
Luego, puedes usar varios métodos para analizar el objeto message
:
- Llama a
getFrom()
para que se muestre el remitente del mensaje. - Llama a
getContentType()
para que se extraiga el tipo de contenido del mensaje. El métodogetContent()
muestra un objeto que implementa la interfazMultipart
. - Llama a
getCount()
para determinar la cantidad de partes. - Llama a
getBodyPart(int index)
para que se muestre una parte del cuerpo en particular.
Después de configurar tu app para controlar el correo electrónico entrante, puedes usar la consola del servidor de desarrollo si deseas simular los mensajes de correo electrónico entrantes. Para obtener más información, incluido cómo iniciar el servidor de desarrollo, consulta El servidor de desarrollador Java. Después de iniciar la aplicación en el servidor de desarrollo local, puedes acceder a ella si visitas la URL http://localhost:8888/_ah/admin/. Reemplaza el valor 8888 por cualquier puerto que uses en caso de que no uses el puerto predeterminado para el servidor de desarrollo local.
En el servidor de desarrollo, haz clic en Inbound Mail en el lado izquierdo, completa el formulario que aparece y haz clic en Send Email.