Publicar en Drupal desde una cuenta de correo electrónico
Hace algunos meses empecé a usar posterous para publicar contenidos mediante correo electrónico; que luego se enviaban a mi sitio vía XML-RPC para ser publicados como historias del blog. Teniendo en cuenta las facilidades que presentan los editores de correo para formatear contenidos básicos, como el propio editor de GMail, me resulta mucho más cómodo y rápido preparar y enviar un correo electrónico que ir al sitio web, identificarme para acceder al formulario de envíos, editar los textos y publicar el contenido. Y eso que casi no publico.
El caso es que posterous ha tenido su momento y ha llegado la hora de volver al regazo de mi instalación basada en Drupal. Pero, ¿cómo publicar contenidos en mi sitio usando el correo electrónico y sin herramientas intermedias?. Pues me ha bastado con crear una cuenta de correo accesible vía POP3 (también sirve IMAP); instalar el módulo Mailhandler siguiendo las habituales directrices de instalación de módulos de Drupal; y activarlo. Luego he añadido un buzón nuevo en Administrar -> Administración de contenido -> Mailhandler boxes con los siguientes datos:
- Email address
Es la dirección de correo electrónico a la que se enviarán los contenidos. Opcionalmente se puede indicar una segunda cuenta para ser usada por otros módulos, pero no es nuestro caso. En general, usando INBOX y POP3 no habrá problemas para configurar el acceso al buzón. - Mailbox domain
Es el dominio para acceder al buzón, que puede ser algo así como pop3.midominio.com; y también el puerto de acceso, normalmente 110 para POP3. Además serán necesarios el usuario y la contraseña de acceso al buzón de la cuenta. Por cierto, la contraseña se guarda como texto plano en la base de datos, por lo que es recomendable no utilizar ninguna contraseña ya usada que pueda ser crítica. - Extra commands
Un apartado de comandos opcionales para la función imap_open usada por Mailhandler. En mi caso he tenido que incluir el comando /ssl. Por ejemplo, para evitar errores de acceso del tipo warning: imap_open() [function.imap-open]: Couldn’t open stream… puede ser útil incluir los comandos /novalidate-cert/tls. Aquí hay sugerencias para diferentes proveedores. - MIME preference
Es importante dejar la opción HTML para poder interpretar los formatos del mensaje de correo. En mi caso enviaré mis contenidos desde una cuenta de GMail y querré aprovechar las opciones básicas para formatear el contenido como negritas, cursivas, listas, enlaces, etc… - Security
He dejado desactivada esta opción, primero porque me deshabilita la preferencia MIME anterior y segundo porque me resulta suficiente el nivel de seguridad proporcionado por defecto. - Send error replies
He activado el envío de mensajes de respuesta al autor para los casos de error, por ejemplo para notificar errores en la lectura del buzón o cuando no haya podido grabar el contenido. - From header
Lo he dejado en blanco. La cuenta de correo del autor del mensaje debe pertenecer a un usuario válido del sitio y con permisos para crear nodos del tipo de contenido asociado a este buzón. Este campo puede resultar útil para trabajar con listas de correo y sea preciso asociar el envío a un usuario concreto. - Default commands
Por ahora en esta etapa de pruebas sólo tengo estos comandos:
type: blog
status: 0
que obliga a guardar los contenidos como entradas del blog (type: blog) pero sin publicarlas (status: 0). Estos comandos se considerarán por defecto siempre que no se indiquen otros valores en el mensaje de correo. - Signature separator
Permite identificar el comienzo del pie de fima del correo para no considerarlo como contenido. Lo he dejado en blanco. - Delete messages after they are processed?
Marco esta opción; además, para POP3 es obligatorio. - Cron processing
Deja activada esta opción para comprobar periódicamente el estado del buzón y publicar los contenidos si fuese necesario. - Input format
Permite definir el formato de entrada a usar para grabar el contenido. Por ahora dejo el formato habitual de mis envíos. - Message authentication method
Dejo la opción Mainhandler Default.
Y listo. Antes de guardar la configuración se puede hacer un test de conexión para verificar que los datos son correctos y que Drupal puede acceder al buzón de la cuenta de correo habilitada para enviar los contenidos.
También se pueden encontrar unas opciones generales en Administrar -> Configuración del sitio -> Mailhandler Settings. Sólo son tres parámetros:
- El tipo de contenido que se intentará crear por defecto si no se ha indicado en la configuración particular del buzón.
- El número máximo de mensajes que se procesarán en cada ejecución del cron. Mantengo el valor cero para tratar todos los mensajes del buzón porque sólo se trata de mi sitio particular.
- La codificación de caracteres por defecto para los correos electrónicos. Mantengo UTF-8.
Hechas las correspondientes pruebas verifico que el sistema funciona, envío a la cuenta creada un mensaje con contenidos convenientemente formateados y espero a que el cron se ejecute para leer el buzón y publicar el contenido como una entrada nueva del blog. Como no podía ser de otra forma, esta publicación está enviada directamente desde mi cuenta de correo electrónico.
De todas formas, esto no es todo, también he tenido que configurar un filtro para convertir y dejar pasar sólo algunos de los formatos que envía GMail en cada mensaje; y tengo pendiente la opción de enviar imágenes adjuntas en los correos para que también salgan publicadas en el blog. Por tanto, continuará…
Hola como estas… gracias por compartir tu experiencia… quería preguntarte si esto apliga para nodos tipo blogs o tambien se puede usar para los del tipo article..
Te pregunto esto porque el sitio que esta más arriba es de una asociación que necesita herramientas para que sus sedes puedan publicar noticias o artículos y una forma rápida de hacerlo es por medio del correo. Me parece interesante el hecho de que los usuarios que publiquen los artículos. Busanco en la web llegé a este post y ciertamente es lo que necesito… lo que me deja un poco desconcertado es si solo aplica a los Blogs. Pregunto de paso, si un correo posee una imagen por ejemplo, este también formará parte del artículo?, y si tiene un adjunto?
Muchas gracias por la atención
Víctor
Se aplica a todo tipo de contenido que pueda crearse con Drupal, incluyendo los tipos predefinidos en la instalación estándar como los que se crean con determinados módulos o los que puedas crear con el módulo CCK. De hecho yo tengo habilitada esta funcionalidad tanto para las entradas de mi blog, las fotos o mis notas, que son tipos de contenido creados ad hoc.
Y efectivamente, también puedes adjuntar una imagen en el correo para incluirla en un campo de tipo imagen (además del módulo CCK necesitarás el módulo ImageField) que deberás añadir al tipo de contenido correspondiente.
Muy practico si queremos mantener el concepto de web 2.0 con contenidos dinamicos.