Envio de correo Framework Fatwire ENVIO DE CORREO DICIEMBRE 2008 Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 1 Envio de correo Framework Fatwire 1 TABLA DE CONTENIDO 1 TABLA DE CONTENIDO............................................................................ 2 2 INSTALACIÓN ............................................................................................ 3 2.1 Introducción................................................................................................. 3 2.2 Instalación de ficheros ................................................................................ 3 2.3 Descripción de uso ..................................................................................... 4 2.3.1 2.3.2 3 Configuración del servidor de correo ....................................................................... 4 Uso en el código ...................................................................................................... 5 Nota. Envío con adjuntos (cliente)........................................................... 5 Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 2 Envio de correo Framework Fatwire 2 INSTALACIÓN 2.1 Introducción En el documento se explica como instalar en el kit de desarrollo entregado por ICM para habilitar el envio de correos. La configuración del servidor de correo se obtiene de unas propiedades existentes en el site de Comunidad de Madrid, ya que al ser datos comunes par todos los sites, nos ahorramos el tener que replicarlos. 2.2 Instalación de ficheros El elemento que envie el correo lo componen unas clases java que se incluirán en la librería de etiquetas de ICM. Las clases necesarias son ByteArrayDataSource, MailTag$CAuthenticator y MailTag del paquete contentserver.tag. Estando el kit instalado en la carpeta c:\icm, los pasos que hay que seguir para la instalación de los ficheros son: o Añadir los ficheros *.class a la librería icmtags.jar que se encuentra en el directorio C:\ICM\FirstSite\resin\webapps\cs\WEB-INF\lib. Hay que añadir los ficheros salvando la información de los directorios, de tal modo que en el jar aparezca que el path de estos ficheros es contentserver\tag\. o Modificar el fichero ICM.tld para incluir la nueva funcionalidad. Este fichero se encuentra en C:\ICM\FirstSite\resin\webapps\cs\WEBINF\futuretense_cs. Para ello, entre la ultima etiqueta </tag> y la etiqueta final </taglib> se ha de incluir las siguientes lineas: <tag> <name>sendmail</name> <tagclass>contentserver.tag.MailTag</tagclass> <bodycontent>empty</bodycontent> <info>Enviar correo electronico</info> <attribute> <name>to</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>replyTo</name> <required>true</required> <rtexprvalue>true</rtexprvalue> Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 3 Envio de correo Framework Fatwire </attribute> <attribute> <name>subject</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>body</name> <required>required</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>formato</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>adjuntos</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> 2.3 Descripción de uso 2.3.1 Configuración del servidor de correo Los datos de configuración del servidor de correo se toman de las siguientes propiedades (asset cm_property) del site de Comunidad de Madrid, para evitar tenerlos duplicados en cada site: o o o o o CM_smtp_host CM_smtp_user CM_smtp_password CM_smtp_port CM_smtp_authentication A la hora de enviar correo en formato html, si se quiere insertar imágenes o ficheros de estilo que se encuentran en la carpeta de StaticFiles, es necesario indicar la ruta absoluta de estos ficheros. Para tal efecto se pueden utilizar dos propiedades que existen en el site de Comunidad de Madrid: o CM_hostName (un valor de ejemplo sería www.madrid.org) o CM_rutaContexto (un valor de ejemplo sería /cs/) Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 4 Envio de correo Framework Fatwire 2.3.2 Uso en el código En el elemento de código en el que se vaya a utilizar esta funcionalidad, lo primero que hay que hacer es importar la librería de etiquetas ICM.tld con la siguiente linea: <%@ taglib prefix="icm" uri="futuretense_cs/ICM.tld" %> Se llama a la función pasandole los parámetros correspondientes en la forma: <icm:sendmail to=”…” replyTo=”…” subject=”…” body=”…” formato=”...”/> Pasamos a explicar la función de cada parámetro: o to (obligatorio). Destinatario del correo. Si es más de uno se ponen separados por comas. o replyTo (obligatorio). Dirección de email del que envia el correo. o subject (obligatorio). Asunto del correo o body (obligatorio). Mensaje del correo o formato (opcional). Tiene dos posibles valores: texto o html. Indica el formato en que se envia el correo. Por defecto es html. o adjuntos (opcional). Tiene dos posibles valores: false o true. Indica si se enviaran ficheros adjuntos o no. Esta etiqueta crea un par de variables en Content Server, ErrorCode y ErrorMsg, para indicar si el correo se ha enviado correctamente o ha surgido un error. Tras la llamada de esta función, podemos recuperar estas variables con el tag “<ics:getvar…” e inspeccionar su valor, de tal modo que si ErrorCode es igual a 0 todo ha ido correctamente, en caso contrario ErrorCode contiene el valor -1. La variable ErrorMsg contiene un mensaje explicativo del error, mensaje que también se muestra en el fichero log de Content Server. 3 Nota. Envío con adjuntos (cliente) Si se quieren enviar desde un formulario un correo adjuntando uno o mas ficheros del cliente, se pondrá el parámetro adjuntos=true. Cuando en un formulario existen campos input de tipo file, en la petición se reciben por cada input de tipo file tres parámetros mas. Sea por ejemplo un input de tipo file llamado FICHERO, el servidor recibirá además los parámetros FICHERO_file, FICHERO_size, FICHERO_type. La clase java que hemos desarrollado lo que hace es buscar que parámetros existen conteniendo en el nombre el sufijo “_file” y los trata como si fueran ficheros a adjuntar, por lo tanto hay que tener cuidado de que no existan en el formulario campos cuyo nombre tengan ese sufijo cuando se vayan a enviar ficheros adjuntos. Área de Integración y Arquitectura de Aplicaciones Dirección de Análisis y Mantenimiento de Aplicaciones y Desarrollos Institucionales Subdirección General de Desarrollo, Tecnología e Infraestructuras Página: 5