¿Cómo puedo leer el mensaje de un email y mostrarlo en la consola?

Iniciado por Meta, 11 Junio 2019, 01:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

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.


(A veces tienes que actualizar varias veces tu navegador para que se muestre la captura).

Código C#:
Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using OpenPop.Pop3;

namespace Recibir_email_Consola_01
{
    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 = 100; // X. Ancho.
            Console.WindowHeight = 40; // Y. Alto.

            Console.WriteLine("\t\t----------------------------------------");
            Console.WriteLine("\t\t\tRecibir Correo Electrónico");
            Console.WriteLine("\t\t----------------------------------------");

            try
            {
                ConnectPop3 oC = new ConnectPop3();

                List<OpenPop.Mime.Message> lstMessages = oC.GetMessages();


                if (lstMessages != null)
                {

                    foreach (var oMessage in lstMessages)
                    {
                        Console.WriteLine(oMessage.Headers.Subject); // Asunto.
                        Console.WriteLine(oMessage.Headers.From); // Email del que te envió el mensaje.
                        Console.WriteLine(oMessage.Headers.ContentTransferEncoding); //out: SevenBit.
                        Console.WriteLine(oMessage.Headers.ContentType);
                        Console.WriteLine(oMessage.Headers.Date); // Fecha larga.
                        Console.WriteLine(oMessage.Headers.DateSent); // Fecha corta.
                        Console.WriteLine(oMessage.Headers.Importance); // Out: Normal.
                        Console.WriteLine(oMessage.Headers.MimeVersion); // Versión.
                        Console.WriteLine(oMessage.Headers.MessageId);
                    }
                }
                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                Console.WriteLine("FIN DEL PROGRAMA.");
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }

            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }
    }

    public class ConnectPop3
    {
        public string email = "celltium@gmail.com";
        public string contraseña = "g0923490xgh0945g450Xj4025g";
        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> lstMesages = new List<OpenPop.Mime.Message>(messageCount);

                for (int i = messageCount; i > 0; i--)
                {
                    lstMesages.Add(oClient.GetMessage(i));
                }

                return lstMesages;
            }
        }
    }
}


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

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

¿Cómo puedo ver el mensaje del email?

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

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.



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 (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using OpenPop.Pop3;

using System.Net.Mime;

namespace Recibir_email_Consola_01
{
    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
            {
                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("ASUNTO: ");
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.WriteLine(oMessage.Headers.Subject + "\n"); // Asunto.

                        //Console.WriteLine(oMessage.Headers.From); // Email del que te envió el mensaje.
                        //Console.WriteLine(oMessage.Headers.ContentTransferEncoding); //out: SevenBit.
                        //Console.WriteLine(oMessage.Headers.ContentType);
                        //Console.WriteLine(oMessage.Headers.Date); // Fecha larga.
                        //Console.WriteLine(oMessage.Headers.DateSent); // Fecha corta.
                        //Console.WriteLine(oMessage.Headers.Importance); // Out: Normal.
                        //Console.WriteLine(oMessage.Headers.MimeVersion); // Versión.
                        //Console.WriteLine();

                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine("MENSAJE: "); // Aquí se pone código del mensaje que no se cual es.
                        Console.ForegroundColor = ConsoleColor.Gray;
                        Console.WriteLine(oMessage.MessagePart.GetBodyAsText()); // Mensaje.
                    }
                }
                Console.ForegroundColor = ConsoleColor.Yellow; // Letras amarillas.
                Console.WriteLine();
                Console.WriteLine("FIN DEL PROGRAMA.");
                Console.ReadKey(); // Pulse cualquier tecla para salir.
            }

            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;
            }
        }
    }
}


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.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/