elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 24 Octubre 2018, 21:16 pm
Hola, que tal, Structs 2  >:( porque no Springframework :D ? pero bueno que mas da

bueno mira, usa


https://mvnrepository.com/artifact/org.quartz-scheduler/quartz/2.3.0

Código
  1. <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
  2. <dependency>
  3.    <groupId>org.quartz-scheduler</groupId>
  4.    <artifactId>quartz</artifactId>
  5.    <version>2.3.0</version>
  6. </dependency>

Código
  1. <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
  2. <dependency>
  3.    <groupId>javax.mail</groupId>
  4.    <artifactId>javax.mail-api</artifactId>
  5.    <version>1.6.2</version>
  6. </dependency>


Esto te ayuda a crear la expresion de cron http://www.cronmaker.com/



creas una clase que implente a Job, en ese metodo execute manda el mail

Código
  1. public class TimerClass implements Job {
  2.  
  3.    public TimerClass() {
  4.  
  5.    }
  6.  
  7.    @Override
  8.    public void execute(JobExecutionContext jobExecutionContext) {
  9.         //Logica del mail aqui
  10.          try {
  11.               System.out.println("Hola");
  12.          }catch(JobExecutionException  ex) {
  13.          }
  14.  
  15.    }
  16. }
  17.  

En tu clase que implementa el ServletContextListener dentro del método

Código
  1. public void contextInitialized(ServletContextEvent param){
  2. new ExecTimer();
  3. }
  4.  

Código
  1. public class ExecTimer {
  2.  
  3.    private JobDetail job;
  4.    private Trigger trigger;
  5.    private Scheduler scheduler;
  6.  
  7.    private static final String TWENTY_SEC = "0/20 * * * * ?"; //cada 20 segundos
  8.  
  9.                                      //seg,min,hora,dia,mes,diaSemana,Año(Opcional)
  10.                                              //todos los viernes a las 6:30AM
  11.    private static final String FECHA_FUTURA = "00 30 6 ? * FRI";   // http://www.cronmaker.com/
  12.  
  13.  
  14.    public ExecTimer() {
  15.        initTask();
  16.    }
  17.  
  18.    private void initTask() {
  19.        try {
  20.            job = JobBuilder.newJob(TimerClass.class)
  21.                    .withIdentity("EnviarMail")
  22.                    .build();
  23.            trigger = TriggerBuilder
  24.                    .newTrigger()
  25.                    .withSchedule(CronScheduleBuilder.cronSchedule(FECHA_FUTURA))
  26.                    .build();
  27.            scheduler = new StdSchedulerFactory().getScheduler();
  28.            scheduler.start();
  29.            scheduler.scheduleJob(job, trigger);
  30.        } catch (SchedulerException e) {
  31.            e.printStackTrace();
  32.        }
  33.    }
  34. }

Con Springboot seria mas facil aun, menos codigo y sin .xml  >:D

Código
  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. import org.springframework.scheduling.annotation.EnableAsync;
  4. import org.springframework.scheduling.annotation.EnableScheduling;
  5.  
  6. @EnableScheduling
  7. @SpringBootApplication
  8. public class Application {
  9.  
  10.    public static void main(String ...blabla) {
  11.        SpringApplication.run(Application.class);
  12.    }
  13.  
  14. }
  15.  


Código
  1.  
  2. @Scheduled(cron= "00 30 6 ? * FRI")
  3. public void enviarMail() {
  4.    System.out.println("Hola, ");
  5. }
  6.  

Y otra cosa importante la operación de envío del mail puedes ejecutarla de manera asíncrona, hay mucha maneras de hacerlo con java, hará que tu aplicación no se bloquee, mas reactiva  :D

Buenas rub'n, estoy implementando ahora esto que me comentaste, pero olvidé preguntarte algo importante que no comprendo.

¿Como puedo hacer para programar la tarea del envío del correo un mes despues de que un usuario realice un evento (alta en base de datos) ? Es decir, que en cuanto el usuario realice el evento, se programe la tarea.

Lo que no veo es como llamar desde la clase que gestiona el alta en base de datos a execTimer para pasarle la fecha en la que se debe enviar el correo.

De nuevo gracias por tu ayuda.
2  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 7 Octubre 2018, 17:36 pm
Buenas rub'n ,

estoy conociendo ahora Structs 2, y la verdad es que me está gustando como framework, Springframework no lo he trabajado aun.

En cuanto a tus indicaciones, muchas gracias, lo intentaré así. En cualquier caso, sabes como funciona exactamente Quartz internamente? Me refiero a como programa los trabajos. (Esto último es solo curiosidad  :laugh:)

Un saludo.
3  Programación / Java / Re: Envío de correo programado en otra fecha en Java en: 4 Octubre 2018, 23:25 pm
Hola 3n31ch, gracias por tu respuesta, imaginaba que sería así, era por confirmar. Me pondré a ello a ver como puedo hacerlo. Tengo que ver como programar en Struts 2 una URL de este tipo, y controlar la seguridad. ¿Podrias darme alguna directriz al respecto si conoces el framework? Gracias de antemano.

Por cierto, buscando por ahí encontre lo siguiente:

http://www.quartz-scheduler.org/

Es una librería que, al parecer, sirve para postergar la ejecución de código, lo que no tengo ni idea es de como funcionará, ya que entiendo que por supuesto esto debe ser el SO quien lo realice, no se como interactuará la librería con el. ¿Que te parece la librería a simple vista? ¿La conoces?

Un saludo.
4  Programación / Java / Envío de correo programado en otra fecha en Java en: 4 Octubre 2018, 20:55 pm
Buenas tardes,

estoy desarrollando una aplicación web con Java en el framework Struts2. Necesito que, a los X dias de realizar una acción en mi programa, se envíe un correo recordatorio a una dirección de email especifica de forma automática. Se como puedo enviar correos usando la API JAVA MAIL, pero no se si existe algún servicio o alguna cosa que pueda utilizar para programar el envío en una fecha concreta del futuro.

Agradezco vuestra ayuda de antemano, un saludo.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines