SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
SERVEIS

   5   Correu electrònic
       i pàgines web
CORREU
                             JavaMail

“Necessito enviar missatges de correu electrònic
          des d’una aplicació Java..”

 L’API JavaMail és una extensió estàndard per llegir, compondre i
  enviar missatges electrònics.

 Utilitzem aquest paquet per crear components tipus Mail User
  Agent (MUA) similars a Outlook. JavaMail està dissenyat per enviar
  i rebre missatges de correu electrònic.

 Per portar a terme l’enviament de missatges de correu electrònic es
  serveix de varis protocols (per exemple, SMTP, POP o IMAP).
CORREU
                          Protocols

 Protocols d’emmagatzematge de missatges: Llegir missatges
  des d’un servidor.
    IMAP (Internet Message Access Protocol, Protocol d’accés als
      missatges per Internet).
    POP (Post Office Protocol, Protocol de l’oficina de Correus).

 Protocols de transport de missatges: Envia missatges a un
  servidor
    SMTP (Simple Mail Transfer Protocol, Protocol senzill de
      Transferència de correus).

 Extensions de multipropòsit de correus de Internet (MIME):
  Estàndard per descriure els missatges de correu electrònic.
CORREU
                     Protocols

 El protocol SMTP és el protocol utilitzat per enviar
  correus electrònics.

 Els protocols POP o IMAP són els protocols dels
  que ens servim per descarregar els missatges de
  correu electrònic que es troben en el nostre
  servidor de correu.
CORREU
                        JavaMail

 JavaMail permet l’enviament i la recpeció de missatges de
  correu electrònic i ens proveeix de classes essencials per
  realitzar aquestes tasques.
CORREU
JavaMail: Classes principals
CORREU
Estructura del missatge
CORREU
                         javax.mail

 Les classes bàsiques que componen l’API són:

    Session    Message        Address   Authenticator


   Transport    Store         Folder



 Totes aquestes classes es troben dins del
  paquet javax.mail de l’API JavaMail.
CORREU
                  javax.mail: Session

 La configuració per un compte de Gmail per l’enviament de
  correus electrònics és la següent:

    Requereix usuari i contrasenya. L’usuari és el compte
     de correu – exemple@gmail.com -.
    Protocol smtp.
    TLS, si es troba disponible.
    Port 587 – com sabeu, per defecte no és el port de
     SMTP.
CORREU
                         javax.mail

 Per l’enviament d’un correu electrònic mitjançant un
  compte de Gmail com a servidor de correu utilitzarem
  les següents classes:

    Session    Message        Address   Authenticator


   Transport    Store         Folder


 Totes aquestes classes es troben dins del
  paquet javax.mail de l’API JavaMail.
CORREU
                  javax.mail: Session

 La classe session representa la nostra connexió amb el
  servidor de correu electrònic – en el nostre cas, Gmail -.
  S’obté amb el mètode Session.getDefaultInstance()
  passant-li un paràmetre:

    Un Properties amb les propietats de la connexió.

    Properties és una classe de Java estàndard
     java.util.Properties. En aquesta classe guardarem
     dades – de tipus String – donant-lis un nom a cadascun
     per poder recuperar-los.

    Això ho fem mitjançant el mètode setProperty().
CORREU
                   javax.mail: Session

 Properties     és    una classe      de   Java   estàndard
  java.util.Properties. En aquesta classe guardarem dades –
  de tipus String – donant-lis un nom a cadascun per poder
  recuperar-los.
        Properties p = new Properties( );
        p.setProperty(“un nom”, “un valor”);
        p.setProperty(“PI”, “3.1416”);
 Les Properties que necessiten Session són específiques, és
  a dir, han de tenir uns noms concrets i uns possibles valors
  concrets.
CORREU
                            javax.mail: Session

Quines són les classes estrictament necessàries                 per
connectar-nos amb Gmail i poder enviar missatges?
   Properties p = new Properties ( );

   // Nom del host de correu – smtp.gmail.com –
   props.setProperty(“mail.smtp.host”, “smtp.gmail.com”);

   // TLS si es troba disponible
   props.setProperty(“mail.smtp.starttls.enable”, “true”);

   // Port de gmail per l’enviament de correus
   Props.setProperty(“mail.smtp.port”, “587”);

   // Nom de l’usuari
   Props.setProperty(“mail.smtp.user”, exemple@gmail.com);

   // Si requereix o no usuari i contrasenya per connectar-se
   Props.setProperty(“mail.smtp.auth”, “true”);
CORREU
                  javax.mail: MimeMessage

 Ara construirem un missatge senzill de text. Per això
  instanciarem la classe MimeMessage i li posem varies
  dades.

 En el constructor haurem de passar l’objecte Session.
   MimeMessage message = new MimeMessage(session);


  Posarem, a continuació el FROM i el TO del missatge – és a
   dir, qui l’envia i a qui va adreçat -. Per afegir aquestes dades
   utilitzarem els mètodes setFrom() i addRecipient() de
   MimeMessage i li posem varies dades.
CORREU
                          javax.mail: MimeMessage

 En el constructor de la classe InternetAddress introduirem
  l’adreça de correu.

 Pels destinataris utilitzarem el mètode addRecipient() de
  MimeMessage.

          Message.RecipientType.To Destinatari principal del missatge
          Message.RecipientType.CC Destinatari al que s’envia còpia del missatge
          Message.RecipientType.BCC Destinatari al que s’envia còpia oculta del
           missatge

// Qui envia el correu
message setFrom(new InternetAddress (exemple@gmail.com));

// A qui va adreçat
Message.addRecipient(Message.RecipientType.TO, new InternetAddress(destinatari@domini.com));
CORREU
                 javax.mail: MimeMessage

 Ara ja podem omplir l’assumpte (subject) del missatge i el
  text. Els mètodes que utilitzarem són setSubject() i setText().

    Message.setSubject(“Hola”);
    Message.setText(“Missatget amb JavaMail” + “dels bons”);

  També podriem crear el mateix text però amb text html i
   amb floritures de negreta i cursiva.

    message.setText(“Missatget amb JavaMail<br>” + “<b>dels</b>
    <i>bons</i>”, ISO-8859-1”, “html”);
CORREU
                     javax.mail: Transport

 Per enviar el missatge, utilitzem la classe Transport que
  s’obté de Session.

 El mètode getTransport() requereix un paràmetre String amb
  el nom del protocol a utilitzar. Com el de Gmail és smtp,
  posarem smtp.
   Transport t = session.getTransport(“smtp”);

  Ara establirem la connexió, donant el nom d’usuari i
   contrasenya.
   t.connect (exemple@gmail.com, “la contrasenya”);
CORREU
                    javax.mail: Transport

 Ara enviarem el missatge:
   t.sendMessage(message, message.getAllRecipients());

  El mètode per enviar missatges és sendMessage() i NO
   solament send(). El mètode send() és estàtic i no té en
   compte la connexió, l’usuari o la contrasenya.

  Un cop haguem enviat el missatge, ja podrem tancar la
   connexió.

   t.close ();
CORREU
                        JavaMail: Instal·lació

     JavaMail és una llibreria desenvolupada per SUN
     encaminada a l’enviament de correus electrònics
       directament des de la nostra aplicació JAVA.
 La instal·lació de la lliberia es pot realitzar mitjançant la
  importació des de l’entorn de desenvolupament (Eclipse).

    1) Descarreguem la lliberia (enllaç)
    2) Accedim a les propietats del projecte amb el botó dret del ratolí.
    3) Seleccionem l’opció “java Build Path” i accedim a l’opció “Add external
       JARs”, busquem l’arxiu “mail.jar” que es troba dins de l’arxiu que
       acabem de descarregar.
CORREU
javax.mail & Gmail (1)
CORREU
javax.mail & Gmail (2)
CORREU
javax.mail & Gmail (3)
CORREU
javax.mail & Gmail (4)
SSL i TLS
                       Seguretat de la capa de transport

La TLS (Transport Layer Security, Seguretat de la Capa de
Transport) i la seva antecessora SSL (Secure Sockets Layer,
Capa de Sòcol Segur) són protocols criptogràfics que
proporcionen comunicacions segures per la xarxa.

 ...................

 // TLS si es troba disponible
 props.setProperty(“mail.smtp.starttls.enable”, “true”);
 // Port de gmail per l’enviament de correus
 Props.setProperty(“mail.smtp.port”, “587”);

 // Nom de l’usuari
 Props.setProperty(“mail.smtp.user”, de correu sortint
                          Servidor exemple@gmail.com);        smtp.gmail.com
                           (SMTP) – necessita TLS o SSL:      Utilitza autenticació: Sí
 // Si requereix o no usuari i contrasenya per connectar-se
 Props.setProperty(“mail.smtp.auth”, “true”);                 Port per a TLS/STARTTLS: 587
                                                              Port per a SSL: 465
SSL i TLS
                 Protocols criptogràfics

               Per què s’utilitza el SSL?

• Perquè transferir informació important mitjançant una xarxa
  pot ser d’alt risc en múltiples situacions com, per exemple,
  davant la suplantació de la identitat.
SSL i TLS
                  Protocols criptogràfics

• Actualment, el protocol criptogràfic SSL s’utilitza per protegir
  tot tipus de comunicacions en l’àmbit de Internet,
  principalment les connexions HTTPS.

• Una evolució del protocol SSL és el TLS.

• Tant SSL com TLS estan pensats per protegir les
  comunicacions entre un client i un servidor.

• Els protocols ofereixen la possibilitat de xifrar les dades que
  es transmeten per assegurar la confidencialitat.
SSL i TLS
              Protocols criptogràfics a Java

• Per utilitzar comunicacions xifrades a Java, hem de canviar
  les classes java.net.Socket i java.net.serverSocket per
  javax.net.ssl.SSLSocket i javax.net.ssl.SSLServerSocket.

• Només canviant les declaracions dels sockets i inicialitzant-
  los com sockets SSL protegim les les comunicacions d’una
  aplicació.

• La resta de línies del programa no han de ser modificades
  per res.
SSL i TLS
                 Protocols criptogràfics a Java

• Les         classes        javax.net.ssl.SSLSocket        i
  javax.net.ssl.SSLServerSocket són classes abstractes i, per
  tant, no en podem crear objectes directament.

• Per crear objectes d’aquestes classes ho farem mitjançant
  factories de sòcols. Les factories de sockets SSL venen
  representades per les classes SSLSocketFactory i
  SSLServerSocketFactory.
   SSLSocketFactory ssf = (SSLSocketFactory)SSLSocketFactory.getDefault();
   SSLSocket s = ssf.createSocket(host, port);

• Podrem crear una conneció SSL contra el host indicat
  mitjançant el port indicat. Fariem el mateix pels sòcols de
  servidor.
SSL i TLS
                  KeyStores i TrustStores

• Ja tenim els sòcols creats. I ara, com ens autentiquem?

• El protocol SSL utilitza certificats X.509 per l’autenticació.

• Quan utilitzem factories de sockets “per defecte”, els
  certificats d’autenticació (per identificar-se) es busquen al
  disc, en arxius en format KeyStore.

• Una aplicació de xarxa que utilitzi SSL haurà de disposar
  d’una KeyStore en disc on hi hagi el seu certificat i la seva
  clau privada.
SSL i TLS
                 KeyStores i TrustStores

• Si l’apliació estableix una comunicació i la part remota i
  entrega un certificat, aquesta ha de decidir si el certificat
  rebut és de confiança (trusted) o no.

• En les versions “per defecte” de SSL aquesta comprovació
  també es realitza amb un KeyStore anomenat TrustStore.

• Si el certificat rebut es troba dins del TrustStore, llavors
  s’accepta la comunicació. En cas contrari, es donaria un
  error d’autenticació.
SSL i TLS
                   KeyStores i TrustStores

•   Un KeyStore conté claus privades i els certificats amb les seves
    corresponents claus públiques. Solament és necessari si som un
    servidor i requerim autenticació dels clients.

•   Un TrustStore conté certificats d’altres parts amb les que esperem
    comunicar-nos o d’Autoritats Certificadores en les que confiem per
    identificar altres parts.
Web
        Llegint directament des d’una URL

• Mitjançant   una     crida     al   mètode
  openStream () de la URL podem obtenir
  un flux amb el que llegir el contingut de la
  URL.

• El mètode openStream () retorna un
  objecte java.io.InputStream que facilita la
  lectura del contingut de la URL.
Web
                            Classe URL

•   Mitjançant el mètode openStream () podem establir un fluxe
    d’entrada amb una URL (per exemple, http://www.yahoo.com/) per,
    a continuació, obrir-hi un BufferedReader i llegir el contingut de la
    URL.
Web
                             URLConnection

•   La classe URLConection és la superclasse abstracta de totes les
    classes que representen la comunicació entre l’aplicació i una
    URL.

•   Un objecte d’aquest tipus es pot utilitzar per llegir des de i per
    escriure cap al recurs al que fa referència l’objecte URL.

•   La creació d’una connexió comporta:

     1)   S’obté un objecte URLConnection utilitzant el mètode openConnection() d’un
          objecte URL.
     2)   S’estableixen els paràmetres i les propietats de la petició.
     3)   S’estableix la connexió utilitzant el mètode connect().
     4)   Es pot obtenir informació sobre la capçalera i/o obtenir el recurs remot.
•
Web
URLConnection
Web
Capturar una pàgina web (1)
Web
Capturar una pàgina web (2)

Más contenido relacionado

Similar a 1213 serveis [5] Correu electronic i pagines web

1213 Sockets [3] Programació
1213 Sockets [3] Programació1213 Sockets [3] Programació
1213 Sockets [3] ProgramacióOriol Torres
 
El correu electrònic com a eina bàsica de comunicació
El correu electrònic com a eina bàsica de comunicacióEl correu electrònic com a eina bàsica de comunicació
El correu electrònic com a eina bàsica de comunicacióCiberteka
 
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCPaquita Ribas
 
Xarxes_Multimedia_ Marcos baldovi PAC 3
Xarxes_Multimedia_ Marcos baldovi PAC 3Xarxes_Multimedia_ Marcos baldovi PAC 3
Xarxes_Multimedia_ Marcos baldovi PAC 3Marcos Baldovi
 
ThunderBird i el correu i agenda electrònica - Adrian Escabias
ThunderBird i el correu i agenda electrònica - Adrian EscabiasThunderBird i el correu i agenda electrònica - Adrian Escabias
ThunderBird i el correu i agenda electrònica - Adrian Escabiasescabiasadrian
 
Curs d'iniciació a la informàtica, 4a sessió
Curs d'iniciació a la informàtica, 4a sessióCurs d'iniciació a la informàtica, 4a sessió
Curs d'iniciació a la informàtica, 4a sessióMetodologia 2punt0
 

Similar a 1213 serveis [5] Correu electronic i pagines web (16)

Postfix
PostfixPostfix
Postfix
 
UF2
UF2UF2
UF2
 
1213 Sockets [3] Programació
1213 Sockets [3] Programació1213 Sockets [3] Programació
1213 Sockets [3] Programació
 
El correu electrònic com a eina bàsica de comunicació
El correu electrònic com a eina bàsica de comunicacióEl correu electrònic com a eina bàsica de comunicació
El correu electrònic com a eina bàsica de comunicació
 
Correu electronic
Correu electronicCorreu electronic
Correu electronic
 
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOCXarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
Xarxes Multimèdia - PAC 2 solució - Grau Multimèdia - UOC
 
Basic correu
Basic correuBasic correu
Basic correu
 
Xarxes_Multimedia_ Marcos baldovi PAC 3
Xarxes_Multimedia_ Marcos baldovi PAC 3Xarxes_Multimedia_ Marcos baldovi PAC 3
Xarxes_Multimedia_ Marcos baldovi PAC 3
 
UF2 Final
UF2 FinalUF2 Final
UF2 Final
 
Treball Google
Treball GoogleTreball Google
Treball Google
 
Portals de correu
Portals de correuPortals de correu
Portals de correu
 
ThunderBird i el correu i agenda electrònica - Adrian Escabias
ThunderBird i el correu i agenda electrònica - Adrian EscabiasThunderBird i el correu i agenda electrònica - Adrian Escabias
ThunderBird i el correu i agenda electrònica - Adrian Escabias
 
Resum2
Resum2Resum2
Resum2
 
Presentació del protocol TCP/IP
Presentació del protocol TCP/IPPresentació del protocol TCP/IP
Presentació del protocol TCP/IP
 
Curs d'iniciació a la informàtica, 4a sessió
Curs d'iniciació a la informàtica, 4a sessióCurs d'iniciació a la informàtica, 4a sessió
Curs d'iniciació a la informàtica, 4a sessió
 
UF2 Murgo
UF2 MurgoUF2 Murgo
UF2 Murgo
 

Más de Oriol Torres

Presentation of Treat or Treat
Presentation of Treat or TreatPresentation of Treat or Treat
Presentation of Treat or TreatOriol Torres
 
Presentación pública Treat or Treat
Presentación pública Treat or TreatPresentación pública Treat or Treat
Presentación pública Treat or TreatOriol Torres
 
1213 Threads [4] Sincronització
1213 Threads [4] Sincronització1213 Threads [4] Sincronització
1213 Threads [4] SincronitzacióOriol Torres
 
1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxersOriol Torres
 
1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrentOriol Torres
 
Appetite apps stats market
Appetite apps stats marketAppetite apps stats market
Appetite apps stats marketOriol Torres
 

Más de Oriol Torres (6)

Presentation of Treat or Treat
Presentation of Treat or TreatPresentation of Treat or Treat
Presentation of Treat or Treat
 
Presentación pública Treat or Treat
Presentación pública Treat or TreatPresentación pública Treat or Treat
Presentación pública Treat or Treat
 
1213 Threads [4] Sincronització
1213 Threads [4] Sincronització1213 Threads [4] Sincronització
1213 Threads [4] Sincronització
 
1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers1213 Threads [5] Accés a fitxers
1213 Threads [5] Accés a fitxers
 
1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent1213 Threads [2] Programació concurrent
1213 Threads [2] Programació concurrent
 
Appetite apps stats market
Appetite apps stats marketAppetite apps stats market
Appetite apps stats market
 

1213 serveis [5] Correu electronic i pagines web

  • 1. SERVEIS 5 Correu electrònic i pàgines web
  • 2. CORREU JavaMail “Necessito enviar missatges de correu electrònic des d’una aplicació Java..”  L’API JavaMail és una extensió estàndard per llegir, compondre i enviar missatges electrònics.  Utilitzem aquest paquet per crear components tipus Mail User Agent (MUA) similars a Outlook. JavaMail està dissenyat per enviar i rebre missatges de correu electrònic.  Per portar a terme l’enviament de missatges de correu electrònic es serveix de varis protocols (per exemple, SMTP, POP o IMAP).
  • 3. CORREU Protocols  Protocols d’emmagatzematge de missatges: Llegir missatges des d’un servidor.  IMAP (Internet Message Access Protocol, Protocol d’accés als missatges per Internet).  POP (Post Office Protocol, Protocol de l’oficina de Correus).  Protocols de transport de missatges: Envia missatges a un servidor  SMTP (Simple Mail Transfer Protocol, Protocol senzill de Transferència de correus).  Extensions de multipropòsit de correus de Internet (MIME): Estàndard per descriure els missatges de correu electrònic.
  • 4. CORREU Protocols  El protocol SMTP és el protocol utilitzat per enviar correus electrònics.  Els protocols POP o IMAP són els protocols dels que ens servim per descarregar els missatges de correu electrònic que es troben en el nostre servidor de correu.
  • 5. CORREU JavaMail  JavaMail permet l’enviament i la recpeció de missatges de correu electrònic i ens proveeix de classes essencials per realitzar aquestes tasques.
  • 8. CORREU javax.mail  Les classes bàsiques que componen l’API són: Session Message Address Authenticator Transport Store Folder  Totes aquestes classes es troben dins del paquet javax.mail de l’API JavaMail.
  • 9.
  • 10. CORREU javax.mail: Session  La configuració per un compte de Gmail per l’enviament de correus electrònics és la següent:  Requereix usuari i contrasenya. L’usuari és el compte de correu – exemple@gmail.com -.  Protocol smtp.  TLS, si es troba disponible.  Port 587 – com sabeu, per defecte no és el port de SMTP.
  • 11. CORREU javax.mail  Per l’enviament d’un correu electrònic mitjançant un compte de Gmail com a servidor de correu utilitzarem les següents classes: Session Message Address Authenticator Transport Store Folder  Totes aquestes classes es troben dins del paquet javax.mail de l’API JavaMail.
  • 12. CORREU javax.mail: Session  La classe session representa la nostra connexió amb el servidor de correu electrònic – en el nostre cas, Gmail -. S’obté amb el mètode Session.getDefaultInstance() passant-li un paràmetre:  Un Properties amb les propietats de la connexió.  Properties és una classe de Java estàndard java.util.Properties. En aquesta classe guardarem dades – de tipus String – donant-lis un nom a cadascun per poder recuperar-los.  Això ho fem mitjançant el mètode setProperty().
  • 13. CORREU javax.mail: Session  Properties és una classe de Java estàndard java.util.Properties. En aquesta classe guardarem dades – de tipus String – donant-lis un nom a cadascun per poder recuperar-los. Properties p = new Properties( ); p.setProperty(“un nom”, “un valor”); p.setProperty(“PI”, “3.1416”);  Les Properties que necessiten Session són específiques, és a dir, han de tenir uns noms concrets i uns possibles valors concrets.
  • 14. CORREU javax.mail: Session Quines són les classes estrictament necessàries per connectar-nos amb Gmail i poder enviar missatges? Properties p = new Properties ( ); // Nom del host de correu – smtp.gmail.com – props.setProperty(“mail.smtp.host”, “smtp.gmail.com”); // TLS si es troba disponible props.setProperty(“mail.smtp.starttls.enable”, “true”); // Port de gmail per l’enviament de correus Props.setProperty(“mail.smtp.port”, “587”); // Nom de l’usuari Props.setProperty(“mail.smtp.user”, exemple@gmail.com); // Si requereix o no usuari i contrasenya per connectar-se Props.setProperty(“mail.smtp.auth”, “true”);
  • 15. CORREU javax.mail: MimeMessage  Ara construirem un missatge senzill de text. Per això instanciarem la classe MimeMessage i li posem varies dades.  En el constructor haurem de passar l’objecte Session. MimeMessage message = new MimeMessage(session);  Posarem, a continuació el FROM i el TO del missatge – és a dir, qui l’envia i a qui va adreçat -. Per afegir aquestes dades utilitzarem els mètodes setFrom() i addRecipient() de MimeMessage i li posem varies dades.
  • 16. CORREU javax.mail: MimeMessage  En el constructor de la classe InternetAddress introduirem l’adreça de correu.  Pels destinataris utilitzarem el mètode addRecipient() de MimeMessage.  Message.RecipientType.To Destinatari principal del missatge  Message.RecipientType.CC Destinatari al que s’envia còpia del missatge  Message.RecipientType.BCC Destinatari al que s’envia còpia oculta del missatge // Qui envia el correu message setFrom(new InternetAddress (exemple@gmail.com)); // A qui va adreçat Message.addRecipient(Message.RecipientType.TO, new InternetAddress(destinatari@domini.com));
  • 17. CORREU javax.mail: MimeMessage  Ara ja podem omplir l’assumpte (subject) del missatge i el text. Els mètodes que utilitzarem són setSubject() i setText(). Message.setSubject(“Hola”); Message.setText(“Missatget amb JavaMail” + “dels bons”);  També podriem crear el mateix text però amb text html i amb floritures de negreta i cursiva. message.setText(“Missatget amb JavaMail<br>” + “<b>dels</b> <i>bons</i>”, ISO-8859-1”, “html”);
  • 18. CORREU javax.mail: Transport  Per enviar el missatge, utilitzem la classe Transport que s’obté de Session.  El mètode getTransport() requereix un paràmetre String amb el nom del protocol a utilitzar. Com el de Gmail és smtp, posarem smtp. Transport t = session.getTransport(“smtp”);  Ara establirem la connexió, donant el nom d’usuari i contrasenya. t.connect (exemple@gmail.com, “la contrasenya”);
  • 19. CORREU javax.mail: Transport  Ara enviarem el missatge: t.sendMessage(message, message.getAllRecipients());  El mètode per enviar missatges és sendMessage() i NO solament send(). El mètode send() és estàtic i no té en compte la connexió, l’usuari o la contrasenya.  Un cop haguem enviat el missatge, ja podrem tancar la connexió. t.close ();
  • 20. CORREU JavaMail: Instal·lació JavaMail és una llibreria desenvolupada per SUN encaminada a l’enviament de correus electrònics directament des de la nostra aplicació JAVA.  La instal·lació de la lliberia es pot realitzar mitjançant la importació des de l’entorn de desenvolupament (Eclipse). 1) Descarreguem la lliberia (enllaç) 2) Accedim a les propietats del projecte amb el botó dret del ratolí. 3) Seleccionem l’opció “java Build Path” i accedim a l’opció “Add external JARs”, busquem l’arxiu “mail.jar” que es troba dins de l’arxiu que acabem de descarregar.
  • 25. SSL i TLS Seguretat de la capa de transport La TLS (Transport Layer Security, Seguretat de la Capa de Transport) i la seva antecessora SSL (Secure Sockets Layer, Capa de Sòcol Segur) són protocols criptogràfics que proporcionen comunicacions segures per la xarxa. ................... // TLS si es troba disponible props.setProperty(“mail.smtp.starttls.enable”, “true”); // Port de gmail per l’enviament de correus Props.setProperty(“mail.smtp.port”, “587”); // Nom de l’usuari Props.setProperty(“mail.smtp.user”, de correu sortint Servidor exemple@gmail.com); smtp.gmail.com (SMTP) – necessita TLS o SSL: Utilitza autenticació: Sí // Si requereix o no usuari i contrasenya per connectar-se Props.setProperty(“mail.smtp.auth”, “true”); Port per a TLS/STARTTLS: 587 Port per a SSL: 465
  • 26. SSL i TLS Protocols criptogràfics Per què s’utilitza el SSL? • Perquè transferir informació important mitjançant una xarxa pot ser d’alt risc en múltiples situacions com, per exemple, davant la suplantació de la identitat.
  • 27. SSL i TLS Protocols criptogràfics • Actualment, el protocol criptogràfic SSL s’utilitza per protegir tot tipus de comunicacions en l’àmbit de Internet, principalment les connexions HTTPS. • Una evolució del protocol SSL és el TLS. • Tant SSL com TLS estan pensats per protegir les comunicacions entre un client i un servidor. • Els protocols ofereixen la possibilitat de xifrar les dades que es transmeten per assegurar la confidencialitat.
  • 28. SSL i TLS Protocols criptogràfics a Java • Per utilitzar comunicacions xifrades a Java, hem de canviar les classes java.net.Socket i java.net.serverSocket per javax.net.ssl.SSLSocket i javax.net.ssl.SSLServerSocket. • Només canviant les declaracions dels sockets i inicialitzant- los com sockets SSL protegim les les comunicacions d’una aplicació. • La resta de línies del programa no han de ser modificades per res.
  • 29. SSL i TLS Protocols criptogràfics a Java • Les classes javax.net.ssl.SSLSocket i javax.net.ssl.SSLServerSocket són classes abstractes i, per tant, no en podem crear objectes directament. • Per crear objectes d’aquestes classes ho farem mitjançant factories de sòcols. Les factories de sockets SSL venen representades per les classes SSLSocketFactory i SSLServerSocketFactory. SSLSocketFactory ssf = (SSLSocketFactory)SSLSocketFactory.getDefault(); SSLSocket s = ssf.createSocket(host, port); • Podrem crear una conneció SSL contra el host indicat mitjançant el port indicat. Fariem el mateix pels sòcols de servidor.
  • 30. SSL i TLS KeyStores i TrustStores • Ja tenim els sòcols creats. I ara, com ens autentiquem? • El protocol SSL utilitza certificats X.509 per l’autenticació. • Quan utilitzem factories de sockets “per defecte”, els certificats d’autenticació (per identificar-se) es busquen al disc, en arxius en format KeyStore. • Una aplicació de xarxa que utilitzi SSL haurà de disposar d’una KeyStore en disc on hi hagi el seu certificat i la seva clau privada.
  • 31. SSL i TLS KeyStores i TrustStores • Si l’apliació estableix una comunicació i la part remota i entrega un certificat, aquesta ha de decidir si el certificat rebut és de confiança (trusted) o no. • En les versions “per defecte” de SSL aquesta comprovació també es realitza amb un KeyStore anomenat TrustStore. • Si el certificat rebut es troba dins del TrustStore, llavors s’accepta la comunicació. En cas contrari, es donaria un error d’autenticació.
  • 32. SSL i TLS KeyStores i TrustStores • Un KeyStore conté claus privades i els certificats amb les seves corresponents claus públiques. Solament és necessari si som un servidor i requerim autenticació dels clients. • Un TrustStore conté certificats d’altres parts amb les que esperem comunicar-nos o d’Autoritats Certificadores en les que confiem per identificar altres parts.
  • 33.
  • 34. Web Llegint directament des d’una URL • Mitjançant una crida al mètode openStream () de la URL podem obtenir un flux amb el que llegir el contingut de la URL. • El mètode openStream () retorna un objecte java.io.InputStream que facilita la lectura del contingut de la URL.
  • 35. Web Classe URL • Mitjançant el mètode openStream () podem establir un fluxe d’entrada amb una URL (per exemple, http://www.yahoo.com/) per, a continuació, obrir-hi un BufferedReader i llegir el contingut de la URL.
  • 36. Web URLConnection • La classe URLConection és la superclasse abstracta de totes les classes que representen la comunicació entre l’aplicació i una URL. • Un objecte d’aquest tipus es pot utilitzar per llegir des de i per escriure cap al recurs al que fa referència l’objecte URL. • La creació d’una connexió comporta: 1) S’obté un objecte URLConnection utilitzant el mètode openConnection() d’un objecte URL. 2) S’estableixen els paràmetres i les propietats de la petició. 3) S’estableix la connexió utilitzant el mètode connect(). 4) Es pot obtenir informació sobre la capçalera i/o obtenir el recurs remot. •