Introducción Clases básicas Ejemplos

Slides:



Advertisements
Presentaciones similares
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
Advertisements

Envio de .
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Jorge de Nova Segundo UD 6: Instalación y administración de servicios de correo electrónico Funcionamiento del servicio de correo electrónico.
Jorge de Nova Segundo UD 6:
Mail Server Xavier Bustamante. Objetivo: Permitir que usuarios en la red puedan enviar y recibir mail. HUB user10 user20 Mac OS X Server 10.4 user30.
TEMA: SMTP – POP3 - IMAP.
Gestionar y organizar los elementos del correo electrónico
Que es el protocolo “SSL”
INSTITUTO TECNOLOGICO DE MINATITLAN
Arquitectura CLARO-TECNOTREE
SOCKETS INTRODUCCIÓN DEFINICIÓN TIPOS DE SOCKETS USO DE SOCKETS.
OBJETO REQUEST. El objeto Request Por qué el objeto request Funcionamiento Colecciones: – Transferencia de variables por URL –Transferencia de variables.
Combinación de correspondencia
Funcionamiento del servicio de correo electrónico.
Gabriel Montañés León. La mayoría de los proveedores de servicios de Internet (ISP), y muchos otros servicios de Internet, tienen servidores de noticias.
Almacenamiento virtual de sitios web: «Hosts» virtuales Gustavo Antequera Rodríguez.
Aplicación de Domótica Iluminación Remota FASE 1.
DE LAS CUENTAS DE USUARIO Y OPCIONES DE CARPETA
QUE ES INTERNET Podríamos decir que Internet está formado por una gran cantidad de ordenadores que pueden intercambiar información entre ellos. Es una.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
EL CORREO ELECTRONICO. Introducción : El correo electrónico es el servicio de Internet con más usuarios de todo el mundo. Con este servicio se pueden.
Protocolo POP (Protocolo de oficina postal)
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
TRINO ANDRADE G UNIVERSIDAD ECOTEC. PRESENTACIÓN DE OUTLOOK EXPRESS Microsoft Outlook Express es una herramienta necesaria que le permite administrar.
Ing. Karen Torrealba de Oblitas
POP3 UCLV Mapas Conceptuales para la enseñanza de Redes de Computadoras.
Víctor Toscanini M. & Martín Galaz M.
Correo electrónico Internet
HERNANDEZ RAMIREZ CAROLINA CONALEP IXTAPALUCA 236.
11 de febrero de 2008 Portal de la JuntaPortal del CNICE OTRAS DIRECCIONES Otros portales educativos BuscadoresFreeware Shareware Editoriales Páginas.
EL CORREO ELECTRONICO.
INTRODUCCION El correo electrónico consiste en el intercambio de mensajes entre los usuarios de la red. Mediante el correo electrónico, cualquier usuario.
Introducción Cada día, los ciudadanos de Internet se envían mil millones de mensajes de . Si usted está en línea, puede enviar docenas de s.
Cuentas de usuarios y grupos en windows 2008 server
Tema: RECIBIR Y GESTIONAR CORREOS Integrantes: Michelle Paredes Sthefanie Salazar Rainer Angulo Profesora: Johanna Navarro.
Lisseth Celi Dominique Castro. ¿Q UE ES ? Es un implemento desarrollado por “Microsoft”, este permite a los usuarios de todas partes del mundo organizar.
Unidad 3 y 4 Correo Electrónico.
COLEGIO DE BACHILLERES PLANTEL 13 XOCHIMILCO-TEPEPAN MATERIA:TIC EQUIPO:21 PRESENTACION: BASE DE DATOS ALUMNAS: Adán Millán Sánchez.
CORREOS ELECTRONICOS Adriana Chàvez. Principalmente se usa este nombre para denominar al sistema que provee este servicio en Internet, mediante el protocolo.
Bases de Datos.
1 Temas a tratar Metiendo datos. (2) Como reservar un documento que no queremos que aparezca en informes. (3) Metiendo datos de forma eficaz.(4-5) Búsquedas:
Funcionamiento del servicio de correo electrónico
 Outlook, en computación, o mejor dicho; en informática, es un programa encargado de conectarse a internet desde tu computadora, conectarse a tu correo.
2: Capa Aplicación 1 Capa Aplicación: File Transfer Protocol ELO322: Redes de Computadores Agustín J. González Este material está basado en:  Material.
Tema 6 – Servicio de Correo Electrónico
File Transfer Protocol.
Jorge De Nova Segundo. SSH File Transfer Protocol (también conocido como SFTP o Secure File Transfer Protocol) es un protocolo del nivel de aplicación.
Ing. Elizabeth Guerrero V.
FUNCIONAMIENTO DEL SERVICIO DE CORREO ELECTRÓNICO.
Punto 2 – Elementos de Correo Juan Luis Cano. Para que una persona pueda enviar un correo a otra, cada una ha de tener una dirección de correo electrónico.
¿Que son lo servidores de correo? Es un aplicación de red, ubicada en un servidor en internet en la cual se envían, adjuntos de ficheros de cualquier.
Protocolos de comunicación TCP/IP
Estructura de los mensajes de correo electrónico
Protocolos de Transporte y Aplicación. – TCP y UDP
S ERVICIOS DE RED E I NTERNET T EMA 6 : I NSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS DE CORREO ELECTRÓNICO Nombre: Adrián de la Torre López.
Estructura de los mensajes de correo electrónico
Almacenamiento virtual de sitios web: «Hosts» virtuales
¿Qué es un ? El correo electrónico o fue una de las primeras aplicaciones creadas para Internet y de las que más se utilizan. Éste medio.
Programación Orientada a Objetos
Eva Llorente Remartínez Redireccionar correo de yahoo a hotmail.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
S ERVICIOS DE RED E I NTERNET T EMA 6 : I NSTALACIÓN Y ADMINISTRACIÓN DE SERVICIOS DE CORREO ELECTRÓNICO Nombre: Adrián de la Torre López.
CORREO ELECTRÓNICO Trabajo y comunicación efectiva a través de las tecnologías de la información y comunicación.
Correo electrónico, Chat y otros servicios. INDICE *Orígenes del Correo Electrónico *Correo electrónico o s *Ventajas del correo electrónico *Recibir.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
FTP Y HTTP. HTTP Y HTTPS El Protocolo de transferencia de hipertexto (HTTP, Hypertext Transfer Protocol), uno de los protocolos en el conjunto de aplicaciones.
Introducción a programación web Martin Esses. En las presentaciones anteriores, vimos como enviar datos a un controlador usando POST y como generar formularios.
Transcripción de la presentación:

Introducción Clases básicas Ejemplos TEMA 7. El API JavaMail Introducción Clases básicas Ejemplos

Bibliografía Sun. “Documentación de Java”. http://java.sun.com . Traducciones al castellano en http://www.programacion.com/java/tutorial/javamail

Uso del API JavaMail 1 . Introducción El API JavaMail es un paquete opcional (extensión estándard) para leer, componer, y enviar mensajes electrónicos. El uso de este paquete esta orientado a la creación de programas de tipo MUA (Mail User Agent), similares a Thunderbird y Microsoft Outlook. Su propósito principal por lo tanto no es transportar, enviar, o re-enviar mensajes como sendmail u otros programas del tipo MTA (Mail Transfer Agent). En otras palabras, los usuarios interactúan con los programas para leer y escribir e-mails. Los programas MUA tratan con los programas MTA para el envío real.

Uso del API JavaMail 1 . Introducción El API JavaMail está diseñado para proporcionar acceso independiente del protocolo para enviar y recibir mensajes dividiéndose en dos partes: La primera parte del API está orientada al envío y recepción de mensajes independientemente del proveedor/protocolo. La segunda parte esta orientada a los lenguajes específicos del protocolo como SMTP, POP, IMAP, y NNTP. Con el API, JavaMail para poder comunicar con un servidor, necesitamos un proveedor para un protocolo.

Protocolos de mensajería 1 . Introducción Protocolos de mensajería Básicamente son cuatro: SMTP POP IMAP MIME NNTP y otros Aunque el API sea independiente del protocolo, no podemos evitar las limitaciones de los protocolos subyacentes. Si una capacidad no está soportada por el protocolo elegido, el API JavaMail no hará que esa capacidad aparezca por arte de magia.

1 . Introducción SMTP El protocolo Simple Mail Transfer Protocol (SMTP) está definido por la RFC 821. Define el mecanismo para enviar e-mail. En el contexto del API JavaMail, nuestro programa basado en JavaMail comunicará con el servidor SMTP de nuestro proveedor de servicios (ISP). Este servidor SMTP dejará el mensaje en el servidor SMTP del recipiente(s) para que sea recogido por los usuarios a través de POP o IMAP. Esto no requiere que nuestro servidor SMTP sea un rele abierto, pues se utiliza la autentificación, pero es nuestra responsabilidad asegurarnos de que el servidor SMTP se configure correctamente. No hay nada en el API JavaMail sobre tareas como el configuración de un servidor para retransmitir mensajes o para agregar y para quitar cuentas del e-mail

1 . Introducción POP POP viene de Post Office Protocol. Actualmante en la versión 3, también conocido como POP3, la RFC 1939 define este protocolo. POP es el mecanismo que la mayoría de la gente usa en Internet para conseguir su correo. Define el soporte de un sólo mailbox por cada usuario. Muchas de las cosas con las que estamos familiarizados cuando usamos POP, como la capacidad de ver cuántos mensajes de correo nuevos tienen, no lo soporta POP en absoluto. Estas capacidades se construyen en programas como Eudora o Microsoft Outlook.

1 . Introducción IMAP IMAP es un protocolo más avanzado para recibir mensajes. Definido en la RFC 2060, IMAP viene de Internet Message Access Protocol, y está actualmente en la versión 4, también conocida como IMAP4. Para usar el IMAP, nuestro servidor de correo debe soportar este protocolo. Debido a las capacidades más avanzadas, podríamos pensar que IMAP sería utilizado por todos. Pero no es así. Sobrecarga mucho el servidor de correo, requiriendo que el servidor reciba los nuevos mensajes, los entregue a los usuarios cuando sean solicitados, y los mantiene en las distintas carpetas de cada usuario. Aunque esto centraliza las copias de seguridad, también hace que las carpetas de correo a largo plazo de los usuarios se hagan cada vez más grandes. Con POP, los mensajes recuperados son eliminados del servidor de correo.

javax.mail 2 . Clases Básicas Las clases básicas que componen el API: Session, Message, Address, Authenticator, Transport, Store, y Folder. Todas estas clases se encuentran en el paquete del nivel superior del API JavaMail (J2EE): javax.mail, aunque frecuentemente nos veremos utilizando clases del paquete javax.mail.internet.

Session 2 . Clases Básicas La clase Session define una sesión de correo básica. A partir de una sesión se usan el resto de clases. El objeto Session se aprovecha de un objeto java.util.Properties para obtener información como el servidor de correo, el nombre de usuario, la password, y otras informaciones. El constructor para las clases es privado. Podemos obtener una sola sesión por defecto que puede ser compartida con el método getDefaultInstance(): Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null);

Session 2 . Clases Básicas Alternativamente Properties props = new Properties(); Session session = Session.getInstance(props, null); En ambos casos el argumento null es un objeto Authenticator que no se utiliza en este momento, lo veremos más adelante en Authenticator.

Session 2 . Clases Básicas Para indicar el servidor de envío lo hacemos mediante el objeto Properties, de la siguiente forma: String host= …; Properties props = System.getProperties(); props.put("mail.smtp.host", host); Session session = Session.getDefaultInstance(props, null);

Message 2 . Clases Básicas Una vez que tenemos nuestro objeto Session, es hora de empezar a crear un mensaje para enviar. Esto se hace con un objeto Message. Siendo una clase abstracta, debemos trabajar con una subclalse, en la mayoría de los casos será javax.mail.internet.MimeMessage. Un MimeMessage es un mensaje de e-mail que entiende los tipos MIME, definidos en las distintas RFCs. Para crear un Message, le pasamos el objeto Session al constructor de MimeMessage: MimeMessage message = new MimeMessage(session);

Message 2 . Clases Básicas El mecanismo básico para configurar el contenido es el método setContent(), con los argumentos para el contenido y tipo mime: message.setContent("Hello", "text/plain"); Sin embargo, si sabemos que estámos trabajando con un MimeMessage y nuestro mensaje es texto plano, podemos usar su método setText() que sólo requiere el contenido real. message.setText("Hello"); Para seleccionar el subject, usamos el método setSubject(): message.setSubject("First");

Address 2 . Clases Básicas Una vez que hemos creado la Session y el Message, y también hemos rellenado el mensaje con contenido, es hora de poner dirección a nuestra carta con un objeto Address. Como Message, Address es una clase abstracta. Usaremos la clase javax.mail.internet.InternetAddress. Para crear una dirección con sólo la dirección e-mail, se la pasamos al constructor: Address address = new InternetAddress("president@whitehouse.gov"); Si queremos que aparezca el nombre junto a la dirección e-mail, también podemos pasárselo al constructor: Address address = new InternetAddress("president@whitehouse.gov", "George Bush");

Address 2 . Clases Básicas Necesitaremos crear objetos address para los campos from y to del mensaje. A menos que el servidor lo evite, no hay nada que nos impida enviar un mensaje que parezca que viene de otra persona. Una vez que hemos creado las direcciones, las conectamos al mensaje de una de estas dos formas. Para identificar al que lo envía, usamos los métodos setFrom() y setReplyTo(). message.setFrom(address) Si nuestro mensaje necesita varias direcciones "from", usamos el método addFrom():

Address 2 . Clases Básicas Para identificar a los receptores del mensaje, usamos el método addRecipient(). Este método requiere un Message.RecipientType junto a la dirección. message.addRecipient(type, address) Los tres tipos predefinidos de direcciones son: Message.RecipientType.TO Message.RecipientType.CC Message.RecipientType.BCC Por eso, si el mensaeje fuera dirigido al vice-presidete, enviando copia a la primera dama, esto sería lo apropiado: Address toAddress = new InternetAddress("vice.president@whitehouse.gov"); Address ccAddress = new InternetAddress("first.lady@whitehouse.gov"); message.addRecipient(Message.RecipientType.TO, toAddress); message.addRecipient(Message.RecipientType.CC, ccAddress);

Authenticator 2 . Clases Básicas El API JavaMail puede aprovecharse de un Authenticator para proteger accesos a recursos mediante un nombre de usuario y una password. Para usar el Authenticator, subclasificamos la clase abstracta y devolvemos un ejemplar PasswordAuthentication del método getPasswordAuthentication(). Debemos registrar el Authenticator con la sesión cuando se crea. Luego, nuestro Authenticator será notificado cuando sea necesaria una autentificación. Podríamos mostrar una ventana o leer el nombre de usuario y la password desde un fichero de configuración (aunque si no está encriptado no es seguro), devolviendolo al llamador como un objeto PasswordAuthentication. Properties props = new Properties(); Authenticator auth = new MyAuthenticator(); Session session = Session.getDefaultInstance(props, auth);

Transport 2 . Clases Básicas La parte final del envío de un mensaje es usar la clase Transport. Estas clase habla el lenguaje específico del protocolo para enviar mensajes (normalmente SMTP). Es una clase abstracta y funciona como Session. Podemos usar la versión por defecto de la clase sólo llamando al método estático send(): Transport.send(message);

Transport 2 . Clases Básicas O, podemos obtener un ejemplar específico desde la sesión para nuestro protocolo, pasándole el nombre de usuario y la password (en blanco si no son necesarias), enviar el mensaje, y cerrar la conexión: message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, username, password); // envia el mensaje a la lista de destinatarios // los del mensaje o los que pongamos transport.sendMessage(message, message.getAllRecipients()); transport.close(); Esta última forma es mejor cuando necesitamos enviar varios mensajes, porque mantendrá activa la conexión entre mensajes. El mecanismo básico send() hace un conexión separada al servidor para cada llamada a método.

Store y Folder 2 . Clases Básicas Obtener los mensajes empieza de forma similar a enviar mensajes, con una Session. Sin embargo, después de obtener la sesión, conectamos a un Store, probablemente con un nombre de usuario y una password o Authenticator. Como con Transport, le decimos al Store qué protocolo utilizar: Store store = session.getStore("imap"); Store store = session.getStore("pop3"); store.connect(host, username, password);

Store y Folder 2 . Clases Básicas Después de conectar al Store, podemos obtener un Folder, que debe estar abierto antes de poder leer los mensajes que hay en su interior: Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message message[] = folder.getMessages(); Para POP3, la única carpeta disponible es INBOX. Si estamos usando IMAP, podremos disponer de otras carpetas.

Store y Folder 2 . Clases Básicas Una vez que tenemos un Message para leer, podemos obtener sus contenidos con getContent() o escribir sus contenidos en un stream con writeTo(). El método getContent() sólo obtiene el contenido del mensaje, mientras que la salida de writeTo() incluye las cabeceras. System.out.println(((MimeMessage)message).getContent()) Después de haber leído el e-mail, cerramos la conexión al folder y al store. folder.close(aBoolean); store.close(); El valor booleno pasado al método close() del folder significa si actualizamos o no la carpeta eliminando los mensajes borrados.

Borrar mensajes 2 . Clases Básicas Borrar mensajes implica trabajar con las Flags asociadas con los mensajes. Hay diferentes banderas para diferentes estados, algunas definidas por el sistema y otras definidas por el usuario. Las banderas predefinidas se definen en forma de clase interna Flags.Flag y se listan abajo: Flags.Flag.ANSWERED Flags.Flag.DELETED Flags.Flag.DRAFT Flags.Flag.FLAGGED Flags.Flag.RECENT Flags.Flag.SEEN Flags.Flag.USER Sólo porque una bandera exista no significa que sea soportada por todos los proveedores/servidores de correo. Para conocer las banderas soportadas, solicitamos la carpeta con getPermanentFlags().

Borrar mensajes 2 . Clases Básicas Para borrar mensajes, seleccionamo la bandera DELETED del mensaje: message.setFlag(Flags.Flag.DELETED, true); Primero debemos abrir la carpeta en modo READ_WRITE: folder.open(Folder.READ_WRITE); Luego, cuando hayamos procesado todos los mensajes, cerramos la carpeta, pasando un valor true para purgar todos los mensajes borrados. folder.close(true); Hay un método expunge() de Folder que puede usarse para borrar los mensajes. Sin embargo, no funciona con el proveedor POP3 de Sun. Para deseleccionar una bandera, sólo pasando false al método setFlag(). Para ver si una bandera está seleccionada, lo comprobamos con isSet().

Enviar mensajes 3 . Ejemplos import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class MailExample { public static void main (String args[]) throws Exception { String host = args[0]; String from = args[1]; String to = args[2]; // Get system properties Properties props = System.getProperties(); // Setup mail server props.put("mail.smtp.host", host); // Get session Session session = Session.getDefaultInstance(props, null); // Define message MimeMessage message = new MimeMessage(session); // Set the from address message.setFrom(new InternetAddress(from)); // Set the to address message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set the subject message.setSubject("Hello JavaMail"); // Set the content message.setText("Welcome to JavaMail"); // Send message Transport.send(message); } }

Enviar mensajes 3 . Ejemplos Properties props = new Properties(); props.put("mail.smtp.host", "my-mail-server"); props.put("mail.from", "me@example.com"); Session session = Session.getInstance(props, null); try { MimeMessage msg = new MimeMessage(session); msg.setFrom(); msg.setRecipients(Message.RecipientType.TO, "you@example.com"); msg.setSubject("JavaMail hello world example"); msg.setSentDate(new Date()); msg.setText("Hello, world!\n"); Transport.send(msg); } catch (MessagingException mex) { System.out.println("send failed, exception: " + mex); }