using System;
using System.Collections.Generic;
using OpenPop.Pop3;
using OpenPop.Mime;
using System.Text.RegularExpressions;
namespace Recibir_email_Consola_03_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
{
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;
}
}
}
}