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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Activar un timer cada cierto tiempo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Activar un timer cada cierto tiempo.  (Leído 3,929 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Activar un timer cada cierto tiempo.
« en: 15 Junio 2019, 11:26 am »

Hola:

Quiero usar un timer en modo consola C# para que lea cada cierto tiempo la bandeja de entrada de un correo.

Por ejemplo, he estado urgando con este código pero no se donde ponerlo siempre da errores.

Código
  1.                Timer miTimer = new Timer
  2.                {
  3.                    Enabled = true
  4.                };
  5.                miTimer.Elapsed += new ElapsedEventHandler(DisparadorEventosTimer);
  6.                miTimer.Interval = 60000; // 1 minuto.
  7.                miTimer.Start(); // Activa el temporizador.

En el evento debo poner en algún luegar para que lea el mensaje de entrada si hay algún mensje nuevo.

Código
  1.        public static void DisparadorEventosTimer(object source, ElapsedEventArgs e)
  2.        {
  3.            Console.Out.WriteLine("Evento: ");
  4.        }


El código del recibir corre electrónic lo ves justo debajo. Solo se actualiza al volver ejecutar la aplicación, cerrarla y vovler a ejecutar. Lo quiero automático, por cada minuto se active el timer, lea si hay mensajes nuevos sin tener que cerrar y ejecutar la aplicación.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using OpenPop.Pop3;
  4. using OpenPop.Mime;
  5. using System.Text.RegularExpressions;
  6.  
  7. namespace Recibir_email_Consola_03_cs
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            // Título de la ventana.
  14.            Console.Title = "Recibir e-mail con Consola C#";
  15.  
  16.            // Tamaño ventana consola.
  17.            Console.WindowWidth = 80; // X. Ancho.
  18.            Console.WindowHeight = 40; // Y. Alto.
  19.  
  20.            // Cursor invisible.
  21.            Console.CursorVisible = false;
  22.  
  23.            // Título del programa.
  24.            Console.WriteLine("\t\t----------------------------------------");
  25.            Console.WriteLine("\t\t\tRecibir Correo Electrónico");
  26.            Console.WriteLine("\t\t----------------------------------------");
  27.            Console.WriteLine();
  28.  
  29.            try
  30.            {
  31.                ConnectPop3 oC = new ConnectPop3();
  32.  
  33.                List<OpenPop.Mime.Message> lstMessages = oC.GetMessages();
  34.  
  35.  
  36.                if (lstMessages != null)
  37.                {
  38.  
  39.                    foreach (var oMessage in lstMessages)
  40.                    {
  41.                        Console.ForegroundColor = ConsoleColor.White;
  42.                        Console.WriteLine("EMAIL DE: ");
  43.                        Console.ForegroundColor = ConsoleColor.Gray;
  44.  
  45.                        //string email = oMessage.Headers.ReturnPath.ToString();
  46.                        string email = oMessage.Headers.From.ToString();
  47.  
  48.                        // Expresión regular detectar dirección email.
  49.                        Regex rx = new Regex(@"<(.*?)>");
  50.                        //Regex rx = new Regex(@"");
  51.                        // Guarda la dirección email en la variable "emailCompleto".
  52.                        string emailCompleto = rx.Match(email).Groups[1].Value;
  53.                        // Muestra solo la dirección del email.
  54.                        Console.WriteLine(emailCompleto);
  55.  
  56.                        // ¿Son email filtrados? Sí, ejecuta las intrucciones necesarios para leer asunto y mensajes.
  57.                        if ((emailCompleto == "metaconta@gmail.com") ||  (emailCompleto == "celltium@gmail.com"))
  58.                        {
  59.                            Console.WriteLine("{0} a pasado el filtro: ", emailCompleto);
  60.  
  61.                            Console.ForegroundColor = ConsoleColor.White;
  62.                            Console.WriteLine();
  63.                            Console.WriteLine("ASUNTO: ");
  64.                            Console.ForegroundColor = ConsoleColor.Gray;
  65.                            Console.WriteLine(oMessage.Headers.Subject + "\n"); // Asunto.
  66.                            Console.ForegroundColor = ConsoleColor.White;
  67.                            Console.WriteLine();
  68.                            Console.WriteLine("MENSAJE: ");
  69.                            Console.ForegroundColor = ConsoleColor.Gray;
  70.  
  71.                            // ¿Es texto sin formato? Sí.
  72.                            // if (oMessage.MessagePart.IsText == true)
  73.                            if (oMessage.MessagePart.IsText)
  74.                            {
  75.                                Console.WriteLine("Texto sin formato.");
  76.                                Console.WriteLine(oMessage.MessagePart.GetBodyAsText());
  77.                            }
  78.                            // No. Texto con formato.
  79.                            else
  80.                            {
  81.                                Console.WriteLine("Texto con formato.");
  82.  
  83.                                // Encuentra el primer texto sin formato.
  84.                                MessagePart plainTextPart = oMessage.FindFirstPlainTextVersion();
  85.                                if (plainTextPart != null)
  86.                                {
  87.                                    // El mensaje tenía una versión de texto sin formato.
  88.                                    Console.WriteLine(plainTextPart.GetBodyAsText());
  89.                                }
  90.                                else
  91.                                {
  92.                                    // Trate de encontrar un cuerpo para mostrar en algunas de las otras versiones de texto.
  93.                                    List<MessagePart> textVersions = oMessage.FindAllTextVersions();
  94.                                    if (textVersions.Count >= 1)
  95.                                    {
  96.                                        Console.WriteLine(textVersions[0].GetBodyAsText());
  97.                                    }
  98.                                    else
  99.                                    {
  100.                                        Console.WriteLine("<<OpenPop>> Cannot find a text version body in this message to show <<OpenPop>>");
  101.                                    }
  102.                                }
  103.                            }
  104.                        }
  105.  
  106.                        // No. Entonces,ignorará los email no filtrados.
  107.                        else
  108.                        {
  109.                            Console.WriteLine("No ha pasado el filtro y no se leerá ningún email.");
  110.                        }          
  111.                    }
  112.                }
  113.                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  114.                Console.WriteLine();
  115.                Console.WriteLine("FIN DEL PROGRAMA.");
  116.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  117.            }
  118.  
  119.            // Cualquier error mostrado en mensaje y de color rojo.
  120.            catch (Exception ex)
  121.            {
  122.                Console.ForegroundColor = ConsoleColor.Red;
  123.                Console.WriteLine();
  124.                Console.WriteLine(ex);
  125.                Console.ReadKey();
  126.            }
  127.        }
  128.    }
  129.  
  130.    public class ConnectPop3
  131.    {
  132.        public string email = "celltium@gmail.com";
  133.        public string contraseña = "g0923490xgh0945g450Xj4025g"; // Ficcicio.
  134.        public int puerto = 995;
  135.        public bool usarSLL = true;
  136.        public string Hostame = "pop.gmail.com";
  137.  
  138.        public List<OpenPop.Mime.Message> GetMessages()
  139.        {
  140.            using (Pop3Client oClient = new Pop3Client())
  141.            {
  142.                oClient.Connect(Hostame, puerto, usarSLL);
  143.                oClient.Authenticate(email, contraseña);
  144.  
  145.                int messageCount = oClient.GetMessageCount();
  146.                List<OpenPop.Mime.Message> lstMessages = new List<OpenPop.Mime.Message>(messageCount);
  147.  
  148.                for (int i = messageCount; i > 0; i--)
  149.                {
  150.                    lstMessages.Add(oClient.GetMessage(i));
  151.                }
  152.  
  153.                return lstMessages;
  154.            }
  155.        }
  156.    }
  157. }
  158.  

¿Alguna idea?

;)


En línea

ThunderCls


Desconectado Desconectado

Mensajes: 455


Coder | Reverser | Gamer


Ver Perfil WWW
Re: Activar un timer cada cierto tiempo.
« Respuesta #1 en: 21 Junio 2019, 01:31 am »

No se a ti pero esto a mi me va bien

Código
  1.    class Program
  2.    {
  3.        static void Main(string[] args)
  4.        {
  5.            SetUpTimer();
  6.            Console.ReadKey();
  7.        }
  8.  
  9.        private static void SetUpTimer()
  10.        {
  11.            Timer miTimer = new Timer
  12.            {
  13.                Interval = 2000,
  14.                Enabled = true
  15.            };
  16.  
  17.            miTimer.Elapsed += (a, b) =>
  18.            {
  19.                Console.WriteLine("Ticking");
  20.            };
  21.  
  22.            miTimer.Start(); // Activa el temporizador.
  23.        }
  24.    }


En línea

-[ "…I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Matar proceso cada cierto tiempo(.bat)
Scripting
Hearts 1 7,159 Último mensaje 11 Septiembre 2007, 17:30 pm
por nhaalclkiemr
Rotacion de imagenes cada cierto tiempo
Desarrollo Web
mark182 3 8,384 Último mensaje 19 Junio 2010, 21:35 pm
por mark182
Ejecutar labels cada cierto tiempo « 1 2 »
Programación Visual Basic
El anonimato 13 7,856 Último mensaje 22 Febrero 2011, 06:18 am
por ignorantev1.1
Problema con wifi, se me va cada cierto tiempo.
Redes
Darkgold9 4 4,406 Último mensaje 20 Agosto 2011, 21:35 pm
por simorg
Ejecutar python desde batch y reiniciarlo cada cierto tiempo.
Scripting
Juancfernandez 2 3,078 Último mensaje 5 Marzo 2020, 21:06 pm
por Juancfernandez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines