none
Timer RRS feed

  • Pregunta

  • Hola:

    Quiero ponerle un timer que cada cierto tiempo o cada excatamente 1 minuto, me lea el correo si hay alguno nuevo.

    No se donde encajarlo, por ahora el código es este.

    using System;
    using System.Collections.Generic;
    using OpenPop.Pop3;
    using OpenPop.Mime;
    using System.Text.RegularExpressions;
    using System.Timers;
    
    namespace Recibir_email_Consola_04_cs
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Título de la ventana.
                Console.Title = "Recibir e-mail con Consola C#";
    
                // Tamaño ventana consola.
                Console.WindowWidth = 80; // X. Ancho.
                Console.WindowHeight = 40; // Y. Alto.
    
                // Cursor invisible.
                Console.CursorVisible = false;
    
                // Título del programa.
                Console.WriteLine("\t\t----------------------------------------");
                Console.WriteLine("\t\t\tRecibir Correo Electrónico");
                Console.WriteLine("\t\t----------------------------------------");
                Console.WriteLine();
    
                try
                {
                    Timer miTimer = new Timer
                    {
                        Enabled = true
                    };
                    miTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
                    miTimer.Interval = 1000;
                    miTimer.Start();
    
                    void DisplayTimeEvent(object source, ElapsedEventArgs e)
                    {
    
                        Console.Out.WriteLine("Finished");
    
                        ConnectPop3 oC = new ConnectPop3();
    
                        List<OpenPop.Mime.Message> lstMessages = oC.GetMessages();
                    }
    
                    if (lstMessages != null)
                    {
    
                        foreach (var oMessage in lstMessages)
                        {
                            Console.ForegroundColor = ConsoleColor.White;
                            Console.WriteLine("EMAIL DE: ");
                            Console.ForegroundColor = ConsoleColor.Gray;
    
                            //string email = oMessage.Headers.ReturnPath.ToString();
                            string email = oMessage.Headers.From.ToString();
    
                            // Expresión regular detectar dirección email.
                            Regex rx = new Regex(@"<(.*?)>");
                            //Regex rx = new Regex(@"");
                            // Guarda la dirección email en la variable "emailCompleto".
                            string emailCompleto = rx.Match(email).Groups[1].Value;
                            // Muestra solo la dirección del email.
                            Console.WriteLine(emailCompleto);
    
                            // ¿Son email filtrados? Sí, ejecuta las intrucciones necesarios para leer asunto y mensajes.
                            if ((emailCompleto == "metaconta@gmail.com") || (emailCompleto == "celltium@gmail.com"))
                            {
                                Console.WriteLine("{0} a pasado el filtro: ", emailCompleto);
    
                                Console.ForegroundColor = ConsoleColor.White;
                                Console.WriteLine();
                                Console.WriteLine("ASUNTO: ");
                                Console.ForegroundColor = ConsoleColor.Gray;
                                Console.WriteLine(oMessage.Headers.Subject + "\n"); // Asunto.
                                Console.ForegroundColor = ConsoleColor.White;
                                Console.WriteLine();
                                Console.WriteLine("MENSAJE: ");
                                Console.ForegroundColor = ConsoleColor.Gray;
    
                                // ¿Es texto sin formato? Sí.
                                // if (oMessage.MessagePart.IsText == true)
                                if (oMessage.MessagePart.IsText)
                                {
                                    Console.WriteLine("Texto sin formato.");
                                    Console.WriteLine(oMessage.MessagePart.GetBodyAsText());
                                }
                                // No. Texto con formato.
                                else
                                {
                                    Console.WriteLine("Texto con formato.");
    
                                    // Encuentra el primer texto sin formato.
                                    MessagePart plainTextPart = oMessage.FindFirstPlainTextVersion();
                                    if (plainTextPart != null)
                                    {
                                        // El mensaje tenía una versión de texto sin formato.
                                        Console.WriteLine(plainTextPart.GetBodyAsText());
                                    }
                                    else
                                    {
                                        // Trate de encontrar un cuerpo para mostrar en algunas de las otras versiones de texto.
                                        List<MessagePart> textVersions = oMessage.FindAllTextVersions();
                                        if (textVersions.Count >= 1)
                                        {
                                            Console.WriteLine(textVersions[0].GetBodyAsText());
                                        }
                                        else
                                        {
                                            Console.WriteLine("<<OpenPop>> Cannot find a text version body in this message to show <<OpenPop>>");
                                        }
                                    }
                                }
                            }
    
                            // No. Entonces,ignorará los email no filtrados.
                            else
                            {
                                Console.WriteLine("No ha pasado el filtro y no se leerá ningún email.");
                            }
                        }
                    }
                    Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                    Console.WriteLine();
                    Console.WriteLine("FIN DEL PROGRAMA.");
                    Console.ReadKey(); // Pulse cualquier tecla para salir.
                }
    
                // Cualquier error mostrado en mensaje y de color rojo.
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine();
                    Console.WriteLine(ex);
                    Console.ReadKey();
                }
            }
        }
    
        public class ConnectPop3
        {
            public string email = "celltium@gmail.com";
            public string contraseña = "g0923490xgh0945g450Xj4025g"; // Ficcicio.
            
            public int puerto = 995;
            public bool usarSLL = true;
            public string Hostame = "pop.gmail.com";
    
            public List<OpenPop.Mime.Message> GetMessages()
            {
                using (Pop3Client oClient = new Pop3Client())
                {
                    oClient.Connect(Hostame, puerto, usarSLL);
                    oClient.Authenticate(email, contraseña);
    
                    int messageCount = oClient.GetMessageCount();
                    List<OpenPop.Mime.Message> lstMessages = new List<OpenPop.Mime.Message>(messageCount);
    
                    for (int i = messageCount; i > 0; i--)
                    {
                        lstMessages.Add(oClient.GetMessage(i));
                    }
    
                    return lstMessages;
                }
            }
        }
    }


    http://electronica-pic.blogspot.com

    sábado, 15 de junio de 2019 9:10

Todas las respuestas