Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 11 Junio 2019, 01:23 am



Título: ¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?
Publicado por: Meta en 11 Junio 2019, 01:23 am
Hola:

Me funciona el código, veo datos menos el que me interesa, precisamente no me sale el contenido del mensaje, es el que quiero que me muestre en pantalla.
El programa solo lee los últimos email nuevos.

(https://social.msdn.microsoft.com/Forums/getfile/1448463)
(A veces tienes que actualizar varias veces tu navegador para que se muestre la captura).

Código C#:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using OpenPop.Pop3;
  4.  
  5. namespace Recibir_email_Consola_01
  6. {
  7.    class Program
  8.    {
  9.        static void Main(string[] args)
  10.        {
  11.            // Título de la ventana.
  12.            Console.Title = "Recibir e-mail con Consola C#";
  13.  
  14.            // Tamaño ventana consola.
  15.            Console.WindowWidth = 100; // X. Ancho.
  16.            Console.WindowHeight = 40; // Y. Alto.
  17.  
  18.            Console.WriteLine("\t\t----------------------------------------");
  19.            Console.WriteLine("\t\t\tRecibir Correo Electrónico");
  20.            Console.WriteLine("\t\t----------------------------------------");
  21.  
  22.            try
  23.            {
  24.                ConnectPop3 oC = new ConnectPop3();
  25.  
  26.                List<OpenPop.Mime.Message> lstMessages = oC.GetMessages();
  27.  
  28.  
  29.                if (lstMessages != null)
  30.                {
  31.  
  32.                    foreach (var oMessage in lstMessages)
  33.                    {
  34.                        Console.WriteLine(oMessage.Headers.Subject); // Asunto.
  35.                        Console.WriteLine(oMessage.Headers.From); // Email del que te envi&#243; el mensaje.
  36.                        Console.WriteLine(oMessage.Headers.ContentTransferEncoding); //out: SevenBit.
  37.                        Console.WriteLine(oMessage.Headers.ContentType);
  38.                        Console.WriteLine(oMessage.Headers.Date); // Fecha larga.
  39.                        Console.WriteLine(oMessage.Headers.DateSent); // Fecha corta.
  40.                        Console.WriteLine(oMessage.Headers.Importance); // Out: Normal.
  41.                        Console.WriteLine(oMessage.Headers.MimeVersion); // Versi&#243;n.
  42.                        Console.WriteLine(oMessage.Headers.MessageId);
  43.                    }
  44.                }
  45.                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  46.                Console.WriteLine("FIN DEL PROGRAMA.");
  47.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  48.            }
  49.  
  50.            catch (Exception e)
  51.            {
  52.                Console.WriteLine(e.ToString());
  53.            }
  54.        }
  55.    }
  56.  
  57.    public class ConnectPop3
  58.    {
  59.        public string email = "celltium@gmail.com";
  60.        public string contrase&#241;a = "g0923490xgh0945g450Xj4025g";
  61.        public int puerto = 995;
  62.        public bool usarSLL = true;
  63.        public string Hostame = "pop.gmail.com";
  64.  
  65.        public List<OpenPop.Mime.Message> GetMessages()
  66.        {
  67.            using (Pop3Client oClient = new Pop3Client())
  68.            {
  69.                oClient.Connect(Hostame, puerto, usarSLL);
  70.                oClient.Authenticate(email, contrase&#241;a);
  71.  
  72.                int messageCount = oClient.GetMessageCount();
  73.                List<OpenPop.Mime.Message> lstMesages = new List<OpenPop.Mime.Message>(messageCount);
  74.  
  75.                for (int i = messageCount; i > 0; i--)
  76.                {
  77.                    lstMesages.Add(oClient.GetMessage(i));
  78.                }
  79.  
  80.                return lstMesages;
  81.            }
  82.        }
  83.    }
  84. }
  85.  

Pensé que leer el mensaje es ete código pero veo que no.
Código
  1. Console.WriteLine(oMessage.Headers.MessageId);

http://rfinochi.github.io/pop3dotnet/

¿Cómo puedo ver el mensaje del email?

Saludos.


Título: Re: ¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?
Publicado por: Meta en 12 Junio 2019, 06:58 am
Hola:

Ya e funciona leer el POP3 del correo electrónico como puedes ver abajo, lee asunto y el mensaje de texto sin formato, de otra manera no lo lee.

(https://social.msdn.microsoft.com/Forums/getfile/1449001)

El programa de abajo que funciona al completo, quiero modificar algunas cosa que no se como se hace, por ejemplo, si me llega mensajes nuevos, me lee todos los mensajes nuevos, solo quiero que me lea el último mensaje nuevo, solo un mensaje.

A parte de esto, C# no lee el último mensaje nuevo porque tiene que ser que vuelva a ejecutar el ejecutable.

¿Hay alguna manera de que el ejecutable lea en cada cierto tiempo la entrada del email?

Por ejemplo, en cada 5 minutos se pone a leer la bandeja de entrada si hay algún mensaje y lo muestra en pantalla, mientas el mensaje viejo que nunca se borra del servidor, solo en pantalla de la consola C# haga esto, Console.Clear(); // Limpiar pantalla y vuelva a mostrar mensaje nuevo.

Código fuente C#:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using OpenPop.Pop3;
  4.  
  5. using System.Net.Mime;
  6.  
  7. namespace Recibir_email_Consola_01
  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("ASUNTO: ");
  43.                        Console.ForegroundColor = ConsoleColor.Gray;
  44.                        Console.WriteLine(oMessage.Headers.Subject + "\n"); // Asunto.
  45.  
  46.                        //Console.WriteLine(oMessage.Headers.From); // Email del que te envió el mensaje.
  47.                        //Console.WriteLine(oMessage.Headers.ContentTransferEncoding); //out: SevenBit.
  48.                        //Console.WriteLine(oMessage.Headers.ContentType);
  49.                        //Console.WriteLine(oMessage.Headers.Date); // Fecha larga.
  50.                        //Console.WriteLine(oMessage.Headers.DateSent); // Fecha corta.
  51.                        //Console.WriteLine(oMessage.Headers.Importance); // Out: Normal.
  52.                        //Console.WriteLine(oMessage.Headers.MimeVersion); // Versión.
  53.                        //Console.WriteLine();
  54.  
  55.                        Console.ForegroundColor = ConsoleColor.White;
  56.                        Console.WriteLine("MENSAJE: "); // Aquí se pone código del mensaje que no se cual es.
  57.                        Console.ForegroundColor = ConsoleColor.Gray;
  58.                        Console.WriteLine(oMessage.MessagePart.GetBodyAsText()); // Mensaje.
  59.                    }
  60.                }
  61.                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
  62.                Console.WriteLine();
  63.                Console.WriteLine("FIN DEL PROGRAMA.");
  64.                Console.ReadKey(); // Pulse cualquier tecla para salir.
  65.            }
  66.  
  67.            catch (Exception ex)
  68.            {
  69.                Console.ForegroundColor = ConsoleColor.Red;
  70.                Console.WriteLine();
  71.                Console.WriteLine(ex);
  72.                Console.ReadKey();
  73.            }
  74.        }
  75.    }
  76.  
  77.    public class ConnectPop3
  78.    {
  79.        public string email = "celltium@gmail.com";
  80.        public string contraseña = "g0923490xgh0945g450Xj4025g"; // Ficcicio.
  81.        public int puerto = 995;
  82.        public bool usarSLL = true;
  83.        public string Hostame = "pop.gmail.com";
  84.  
  85.        public List<OpenPop.Mime.Message> GetMessages()
  86.        {
  87.            using (Pop3Client oClient = new Pop3Client())
  88.            {
  89.                oClient.Connect(Hostame, puerto, usarSLL);
  90.                oClient.Authenticate(email, contraseña);
  91.  
  92.                int messageCount = oClient.GetMessageCount();
  93.                List<OpenPop.Mime.Message> lstMessages = new List<OpenPop.Mime.Message>(messageCount);
  94.  
  95.                for (int i = messageCount; i > 0; i--)
  96.                {
  97.                    lstMessages.Add(oClient.GetMessage(i));
  98.                }
  99.  
  100.                return lstMessages;
  101.            }
  102.        }
  103.    }
  104. }

Les recuerdo que solo admite mensaje texto sin formato para que lo lea.

Datos de interés.

https://github.com/foens/hpop

http://hdeleon.net/realizar-una-conexion-el-correo-para-ver-los-mails-con-c-net-gmail-pop3-openpop-net/

Un cordial saludos.