Ver Mensaje Individual
  #6 (permalink)  
Antiguo 06/06/2013, 04:00
Avatar de rgf1987
rgf1987
 
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 10 meses
Puntos: 22
Respuesta: Enviar emails desde java

Bueno al final lo hice con hilos como me dices, sigue tardando, pero como se ejecuta en segundo plano no me da problemas : ), al final el codigo quedó así:

Creo el hilo:

Código Java:
Ver original
  1. Correo correo = new Correo(articulo.getAutor().getEmailUsuario(),
  2.                 Constantes.TITULO_CORREO_ARTICULOENVIADO,
  3.                 Constantes.CUERPO_CORREO_ARTICULOENVIADO, datosAdicionales);
  4.         Thread hiloCorreo = new Thread (correo);
  5.         hiloCorreo.start();


Y la clase Correo quedaria asi implementando la interfaz Runnable:

Código Java:
Ver original
  1. public class Correo implements Runnable{
  2.     Properties props = new Properties();
  3.     String emailDestino;
  4.     String subject;
  5.     String body;
  6.     String otherDates;
  7.     public Correo(){}
  8.     public Correo(String emailDestino, String subject, String body, String otherDates){
  9.         this.emailDestino=emailDestino;
  10.         this.subject=subject;
  11.         this.body=body;
  12.         this.otherDates=otherDates;
  13.     }
  14.     @Override
  15.     public void run()
  16.     {
  17.         Correo obj = new Correo();
  18.         String server = "smtp.gmail.com";
  19.         String userName = "[email protected]";
  20.         String password = "rootroot";
  21.         String fromAddres = "todomotorrevista";
  22.         String toAddres = emailDestino;
  23.         String cc = "";
  24.         String bcc = "";
  25.         boolean htmlFormat = false;        
  26.        
  27.        
  28.         obj.sendMail(server, userName, password, fromAddres, toAddres, cc, bcc,
  29.                      htmlFormat, subject, body+otherDates);
  30.              
  31.        
  32.     }
  33.  
  34.     private void sendMail(String server, String userName, String password, String fromAddress, String toAddress, String cc, String bcc, boolean htmlFormat, String subject, String body)
  35.     {
  36.    
  37.         Properties properties = System.getProperties();
  38.         properties.put("mail.smtps.host", server);
  39.         properties.put("mail.smtps.auth", "true");
  40.         Session ses  = Session.getInstance(properties);
  41.  
  42.         ses.setDebug(true);
  43.  
  44.         try{
  45.        
  46.             MimeMessage msg = new MimeMessage(ses);
  47.    
  48.             msg.setFrom(new InternetAddress(fromAddress));
  49.    
  50.             if (toAddress != null){
  51.                msg.addRecipients(Message.RecipientType.TO, toAddress);
  52.             }
  53.    
  54.             if (cc != null){
  55.                 msg.setRecipients(Message.RecipientType.CC,InternetAddress.parse(cc, false));
  56.             }
  57.    
  58.             if (bcc != null){
  59.                 msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(bcc, false));
  60.             }
  61.    
  62.             if (htmlFormat){
  63.                 msg.setContent(body, "text/html");
  64.             }
  65.             else{
  66.                 msg.setContent(body, "text/plain");
  67.             }
  68.    
  69.             msg.setSubject(subject);
  70.             msg.saveChanges();
  71.    
  72.             Transport tr = ses.getTransport("smtps");
  73.             tr.connect(server,userName, password);
  74.             tr.sendMessage(msg, msg.getAllRecipients());
  75.             tr.close();
  76.         }
  77.        
  78.         catch(MessagingException e){
  79.             e.printStackTrace();
  80.         }  
  81.         }
  82.    
  83. }
  84.  
  85. class MyPasswordAuthenticator extends Authenticator{
  86.    String user;
  87.    String pw;
  88.  
  89.    public MyPasswordAuthenticator (String username, String password)   {
  90.       super();
  91.       this.user = username;
  92.       this.pw = password;
  93.    }
  94.    public PasswordAuthentication getPasswordAuthentication()   {
  95.       return new PasswordAuthentication(user, pw);
  96.    }
  97.    
  98. }


En este caso... no haria falta sincronizacion, ¿o si?