Pedazo de código. Eso si, tengo que entenderlo todo paso por paso. Si lo hiciste tu, buen trabajo.
LAs campturas te quedaron de lujo. Voy a investigar.
LAs campturas te quedaron de lujo. Voy a investigar.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCitarOpción A.
Opción B.
> Opción C.
using System;
namespace Menu_consola_18_cs
{
class Program
{
static void Main(string[] args)
{
Console.Title = "Menú de opciones";
// Tamaño ventana consola.
// X anchura.
Console.WindowWidth = 20;
// Y altura.
Console.WindowHeight = 5;
// Oculto el cursor.
Console.CursorVisible = false;
// Fondo verde.
Console.BackgroundColor = ConsoleColor.Green;
// Letras negras.
Console.ForegroundColor = ConsoleColor.Black;
MenuPrincipal();
}
#region Menú principal.
public static void MenuPrincipal()
{
// Almacena la tecla pulsada en la variable.
ConsoleKey teclaInicial;
// Limpiar pantalla.
Console.Clear();
// Posición del cursor del título del MENÚ PRINCIPAL.
Console.SetCursorPosition(0, 0);
// Título.
Console.Write(" MENÚ PRINCIPAL ");
// Pocisión de la hora.
Console.SetCursorPosition(4, 2);
// Formato numérico dd/MM/yyyy.
Console.Write(DateTime.Now.ToString("ddd dd MMM"));
// Almacena en la variable una tecla pulsada.
teclaInicial = Console.ReadKey(true).Key;
// ¿Haz pulsado la tecla Enter?
if (teclaInicial == ConsoleKey.Enter)
{
// Sí. Se ejecuta esta función.
MenuOpciones();
}
}
#endregion
#region Menú de opciones principales.
public static void MenuOpciones()
{
// Contador de teclas y navegador.
int opcion = 0;
// Capturar tecla para luego validar.
ConsoleKey tecla;
while (true)
{
//******************************************************************
// Dibujo el menú principal.
// Limpiar pantalla.
Console.Clear();
switch (opcion)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.Write("> Opción A. ");
Console.SetCursorPosition(0, 1);
Console.Write(" Opción B. ");
Console.SetCursorPosition(0, 2);
Console.Write(" Opción C. ");
Console.SetCursorPosition(0, 3);
Console.Write(" Salir. ");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.Write(" Opción A. ");
Console.SetCursorPosition(0, 1);
Console.Write("> Opción B. ");
Console.SetCursorPosition(0, 2);
Console.Write(" Opción C. ");
Console.SetCursorPosition(0, 3);
Console.Write(" Salir. ");
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.Write(" Opción A. ");
Console.SetCursorPosition(0, 1);
Console.Write(" Opción B. ");
Console.SetCursorPosition(0, 2);
Console.Write("> Opción C. ");
Console.SetCursorPosition(0, 3);
Console.Write(" Salir. ");
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.Write(" Opción A. ");
Console.SetCursorPosition(0, 1);
Console.Write(" Opción B. ");
Console.SetCursorPosition(0, 2);
Console.Write(" Opción C. ");
Console.SetCursorPosition(0, 3);
Console.Write("> Salir. ");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (tecla == ConsoleKey.Enter)
{
switch (opcion)
{
case 0:
OpcionA();
break;
case 1:
OpcionB();
break;
case 2:
OpcionC();
break;
case 3:
MenuPrincipal();
break;
default:
break;
}
}
// Flecha abajo del teclado.
if (tecla == ConsoleKey.DownArrow)
{
opcion++;
}
// Flecha arriba del teclado.
if (tecla == ConsoleKey.UpArrow)
{
opcion--;
}
// Si está en la última opción del menú, salta a la primera.
if (opcion > 3)
{
opcion = 0;
}
// Si está en la primera posición del menú, salta a la última.
if (opcion < 0)
{
opcion = 3;
}
}
}
#endregion
#region Opción A (0).
public static void OpcionA()
{
ConsoleKey teclaOpcionA;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción A.");
Console.SetCursorPosition(0, 2);
Console.WriteLine("Pulse Enter para");
Console.SetCursorPosition(0, 3);
Console.WriteLine("Salir.");
// Almacena el teclado pulsado en la variable teclaSubMenuA.
teclaOpcionA = Console.ReadKey(true).Key;
} while (teclaOpcionA != ConsoleKey.Enter);
}
#endregion
#region Opción B (1).
public static void OpcionB()
{
// Contador de teclas y navegador.
int opcionB = 0;
// Capturar tecla para luego validar.
ConsoleKey teclaOpcionB;
while (true)
{
switch (opcionB)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción B. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine("> SubOpción B-1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" SubOpción B-2 ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Salir. ");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción B. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" SubOpción B-1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine("> SubOpción B-2 ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Salir. ");
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción B. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" SubOpción B-1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" SubOpción B-2 ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("> Salir. ");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Leer tecla ingresada por el usuario.
teclaOpcionB = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (teclaOpcionB == ConsoleKey.Enter)
{
switch (opcionB)
{
case 0:
OpcionB1();
break;
case 1:
OpcionB2();
break;
case 2:
MenuOpciones();
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
if (teclaOpcionB == ConsoleKey.DownArrow)
{
opcionB++;
}
if (teclaOpcionB == ConsoleKey.UpArrow)
{
opcionB--;
}
// Si está en la última opción, salta a la primera.
if (opcionB > 2)
{
opcionB = 0;
}
// Si está en la primera posición, salta a la última.
if (opcionB < 0)
{
opcionB = 2;
}
}
}
#endregion
#region Opcion B-1.
public static void OpcionB1()
{
ConsoleKey teclaOpcionB1;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción B-1.");
Console.SetCursorPosition(0, 2);
Console.WriteLine("Pulse Enter para ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("volver atrás. ");
// Almacena el teclado pulsado en la variable teclaSubMenuA.
teclaOpcionB1 = Console.ReadKey(true).Key;
} while (teclaOpcionB1 != ConsoleKey.Enter);
}
#endregion
#region Opcion B-2.
public static void OpcionB2()
{
ConsoleKey teclaOpcionB2;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción B-2.");
Console.SetCursorPosition(0, 2);
Console.WriteLine("Pulse Enter para ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("volver atrás. ");
// Almacena el teclado pulsado en la variable teclaSubMenuA.
teclaOpcionB2 = Console.ReadKey(true).Key;
} while (teclaOpcionB2 != ConsoleKey.Enter);
}
#endregion
#region Opción C (2).
public static void OpcionC()
{
// Contador de teclas y navegador.
int opcionC = 0;
// Capturar tecla para luego validar.
ConsoleKey teclaOpcionC;
Console.Clear();
while(true)
{
switch (opcionC)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción C. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine("> Color 1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" Color 2. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Opción C-1. ");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción C. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" Color 1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine("> Color 2. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Opción C-1. ");
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción C. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" Color 1. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" Color 2. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("> Opción C-1. ");
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.WriteLine("> Color 3. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" Color 4. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" Color 5. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Salir. ");
break;
case 4:
Console.SetCursorPosition(0, 0);
Console.WriteLine(" Color 3. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine("> Color 4. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" Color 5. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Salir. ");
break;
case 5:
Console.SetCursorPosition(0, 0);
Console.WriteLine(" Color 3. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" Color 4. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine("> Color 5. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine(" Salir. ");
break;
case 6:
Console.SetCursorPosition(0, 0);
Console.WriteLine(" Color 3. ");
Console.SetCursorPosition(0, 1);
Console.WriteLine(" Color 4. ");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" Color 5. ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("> Salir. ");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Leer tecla ingresada por el usuario.
teclaOpcionC = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (teclaOpcionC == ConsoleKey.Enter)
{
switch (opcionC)
{
case 0:
// Fondo azul.
Console.BackgroundColor = ConsoleColor.Blue;
// Letras blancas.
Console.ForegroundColor = ConsoleColor.White;
break;
case 1:
// Fondo verde.
Console.BackgroundColor = ConsoleColor.Green;
// Letras negras.
Console.ForegroundColor = ConsoleColor.Black;
break;
case 2:
OpcionC1();
break;
case 3:
// Fondo negro.
Console.BackgroundColor = ConsoleColor.Black;
// Letras rojo.
Console.ForegroundColor = ConsoleColor.Red;
break;
case 4:
// Fondo negro.
Console.BackgroundColor = ConsoleColor.Black;
// Letras rojo.
Console.ForegroundColor = ConsoleColor.Yellow;
break;
case 5:
// Fondo negro.
Console.BackgroundColor = ConsoleColor.Red;
// Letras rojo.
Console.ForegroundColor = ConsoleColor.DarkRed;
break;
case 6:
MenuOpciones();
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
if (teclaOpcionC == ConsoleKey.DownArrow)
{
opcionC++;
}
if (teclaOpcionC == ConsoleKey.UpArrow)
{
opcionC--;
}
// Si está en la última opción, salta a la primera.
if (opcionC > 6)
{
opcionC = 0;
}
// Si está en la primera posición, salta a la última.
if (opcionC < 0)
{
opcionC = 6;
}
}
}
#endregion
#region OpcionC-1.
public static void OpcionC1()
{
// Contador de teclas y navegador.
int opcionC1 = 0;
// Capturar tecla para luego validar.
ConsoleKey teclaOpcionC1;
Console.Clear();
while(true)
{
Console.Clear();
switch (opcionC1)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción C-1.");
Console.SetCursorPosition(0, 2);
Console.WriteLine(" SI");
Console.SetCursorPosition(16, 2);
Console.WriteLine("> NO");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción C-1.");
Console.SetCursorPosition(0, 2);
Console.WriteLine("> SI");
Console.SetCursorPosition(16, 2);
Console.WriteLine(" NO");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Leer tecla ingresada por el usuario.
teclaOpcionC1 = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (teclaOpcionC1 == ConsoleKey.Enter)
{
switch (opcionC1)
{
case 0:
MenuPrincipal();
Console.Clear();
break;
case 1:
OpcionSI();
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
// Flecha derecha.
if (teclaOpcionC1 == ConsoleKey.RightArrow)
{
opcionC1++;
}
// Flecha izquierda.
if (teclaOpcionC1 == ConsoleKey.LeftArrow)
{
opcionC1--;
}
// Si está en la última opción, salta a la primera.
if (opcionC1 > 1)
{
opcionC1 = 0;
}
// Si está en la primera posición, salta a la última.
if (opcionC1 < 0)
{
opcionC1 = 1;
}
}
}
#endregion
#region opcionSI del sub menú C-1.
public static void OpcionSI()
{
ConsoleKey teclaOpcionB1;
Console.Clear();
do
{
Console.SetCursorPosition(0, 0);
Console.WriteLine("Estás en Opción SÍ.");
Console.SetCursorPosition(0, 2);
Console.WriteLine("Pulse Enter para ");
Console.SetCursorPosition(0, 3);
Console.WriteLine("volver atrás. ");
// Almacena el teclado pulsado en la variable teclaOpciónB1.
teclaOpcionB1 = Console.ReadKey(true).Key;
} while (teclaOpcionB1 != ConsoleKey.Enter);
}
#endregion
}
}
#include <LiquidCrystal.h>
// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);
// LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
// Pin 10 para saber que es luz de fondo.
const byte LuzFondo = 10;
const byte Led = 13; // Declaramos la variable pin del Led.
char caracter;
String comando;
void setup()
{
pinMode(Led, OUTPUT); // Inicializa el pin del LED como salida:
Serial.begin(115200); // Puerto serie 115200 baudios.
lcd.begin(16, 2); // Formato de pantalla.
lcd.clear(); // Borra la pantalla y su posición superior izquierda.
lcd.print(" Arduino ");
delay(1000);
}
void loop()
{
/*
Voy leyendo carácter a carácter lo que se recibe por el canal serie
(mientras llegue algún dato allí), y los voy concatenando uno tras otro
en una cadena. En la práctica, si usamos el "Serial monitor" el bucle while
acabará cuando pulsamos Enter. El delay es conveniente para no saturar el
canal serie y que la concatenación se haga de forma ordenada.
*/
while (Serial.available() > 0)
{
caracter = Serial.read();
comando.concat(caracter);
delay(10);
}
/*
Una vez ya tengo la cadena "acabada", compruebo su valor y hago que
la placa Arduino reacciones según sea este. Aquí podríamos hacer lo
que quisiéramos: si el comando es "tal", enciende un Led, si es cual,
mueve un motor... y así.
*/
// Si los carácteres es recibido y verdadero.
if (comando.equals("Luz_ON") == true)
{
digitalWrite(Led, HIGH); // Enciende el Led 13.
Serial.write("ON - Led encendido."); // Envía este mensaje al PC.
lcd.setCursor(0, 1);
lcd.print("Luz ON. "); // Mostrar en el LCD.
}
if (comando.equals("Luz_OFF") == true)
{
digitalWrite(Led, LOW); // Apaga el Led 13.
Serial.write("OFF - Led apagado. "); // Envía este mensaje al PC.
lcd.setCursor(0, 1);
lcd.print("Luz OFF. "); // Mostrar en el LCD.
}
// Limpiamos la cadena para volver a recibir el siguiente comando.
comando = "";
}
// Activar / desactivar Acceso de aplicaciones poco seguras en Google.
// https://myaccount.google.com/lesssecureapps
using System;
using System.Collections.Generic;
using OpenPop.Pop3;
using OpenPop.Mime;
using System.Text.RegularExpressions;
using System.IO.Ports;
using System.Text;
using System.Timers;
namespace Recibir_email_enviar_arduino_01
{
class Program
{
// Disparador de eventos del timer. Dispara cada cierto tiempo por el timer.
public static void DisparadorEventosTimer(object source, ElapsedEventArgs e)
{
//ConsoleKey tecla;
string comando = "";
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 emailDesde = oMessage.Headers.From.ToString();
// Expresión regular detectar dirección email.
Regex rx = new Regex(@"<(.*?)>");
//Regex rx = new Regex(@"^([da-z_.-]+)@([da-z.-]+).([a-z.]{2,6})$");
// Guarda la dirección email en la variable "emailCompleto".
string emailCompleto = rx.Match(emailDesde).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.
comando = oMessage.Headers.Subject; // Guarda el asunto en la variable "comando".
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine();
Console.WriteLine("MENSAJE: ");
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine();
// ¿Es texto sin formato? Sí.
// if (oMessage.MessagePart.IsText == true)
if (oMessage.MessagePart.IsText)
{
Console.WriteLine("Texto sin formato.");
Console.WriteLine(oMessage.MessagePart.GetBodyAsText());
Console.WriteLine("-------------------------------------------");
}
// 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.
Console.ForegroundColor = ConsoleColor.Gray;
// Cree un nuevo objeto SerialPort con la configuración predeterminada.
SerialPort Puerto_serie = new SerialPort("COM4")
{
BaudRate = 115200,
Parity = Parity.None,
StopBits = StopBits.One,
DataBits = 8,
Handshake = Handshake.None,
RtsEnable = true,
// Establecer los tiempos de espera de lectura / escritura.
ReadTimeout = 500, // Milisegundos.
WriteTimeout = 500
};
// Detecta cualquier dato recibido.
Puerto_serie.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
Puerto_serie.Open(); // Abrir puerto.
// ConsoleKey tecla;
Console.WriteLine("Pulse tecla 1 para encender y 2 para apagar:");
do
{
switch (comando)
{
case "Luz_ON":
EncenderLuz();
break;
case "Luz_OFF":
ApagarLuz();
break;
case "Salir":
Environment.Exit(1); // Salir de la consola.
break;
default:
Console.WriteLine("Esperando comandos válidos");
break;
}
//tecla = Console.ReadKey(true).Key; // Espera pulsación de teclas.
//switch (tecla)
//{
// case ConsoleKey.D1: // Tecla 1 del teclado estandar.
// case ConsoleKey.NumPad1: // Tecla 1 del número del pad.
// EncenderLuz();
// break;
// case ConsoleKey.D2:
// case ConsoleKey.NumPad2:
// ApagarLuz();
// break;
// default:
// Console.WriteLine("Tecla el 1, el 2 y Escape para salir.");
// break;
//}
Puerto_serie.Close(); // Cerrar puerto.
} while (comando == "salir"); // while (tecla != ConsoleKey.Escape); // Pulsa Escape para salir del menú.
void EncenderLuz()
{
byte[] miBuffer1 = Encoding.ASCII.GetBytes("Luz_ON"); // Codificación ASCII y guarda en la variable array tipo byte.
Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length); // Envía los datos del buffer todo su contenido.
Console.WriteLine("Comando \"Luz_ON\" enviado."); // Muestra en pantalla comandos enviado.
}
void ApagarLuz()
{
byte[] miBuffer2 = Encoding.ASCII.GetBytes("Luz_OFF");
Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length);
Console.WriteLine("Comando \"Luz_OFF\" enviado.");
}
Console.WriteLine("Presione cualquier tecla para terminar...");
Console.WriteLine();
Console.ReadKey(); // Espera pulsar una tecla cualquiera.
Puerto_serie.Close(); // Cierra el puerto serie.
}
static void Main(string[] args)
{
// Título de la ventana.
Console.Title = "Recibir e-mail con Consola C# y enviar al LCD de Arduino";
// 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-----------------------------------------------------");
Console.WriteLine("\tRecibir Correo Electrónico y enviar al LCD de Arduino");
Console.WriteLine("\t-----------------------------------------------------");
Console.WriteLine();
try
{
Timer miTimer = new Timer
{
Enabled = true
};
miTimer.Elapsed += new ElapsedEventHandler(DisparadorEventosTimer);
miTimer.Interval = 5000; // Escaneo cada 5 segundos.
miTimer.Start(); // Activa el temporizador.
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();
}
}
// Detecta cualquier dato entrante.
private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string entradaDatos = sp.ReadExisting(); // Almacena los datos recibidos en la variable tipo string.
Console.WriteLine("Dato recibido desde Arduino: " + entradaDatos); // Muestra en pantalla los datos recibidos.
}
}
public class ConnectPop3
{
public string email = "celltium@gmail.com";
public string contraseña = "g0923490xgh0945g450Xj4025g"; // Ficticio.
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;
}
}
}
}
Timer miTimer = new Timer
{
Enabled = true
};
miTimer.Elapsed += new ElapsedEventHandler(DisparadorEventosTimer);
miTimer.Interval = 60000; // 1 minuto.
miTimer.Start(); // Activa el temporizador.
public static void DisparadorEventosTimer(object source, ElapsedEventArgs e)
{
Console.Out.WriteLine("Evento: ");
}
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;
}
}
}
}
Cita de: string Manolo en 12 Junio 2019, 14:58 PM
Console.ReadLine() solo pilla 256 caracteres.
byte[] bytes = new byte[2000]; //Nuevo tamanho maximo.
Stream inputStream = Console.OpenStandardInput(bytes.Length);
Console.SetIn(new StreamReader(inputStream));
Console.WriteLine("\t\tMensaje: ");
mensaje = Console.ReadLine();
using System;
using System.Net.Mail;
using System.Text;
using System.Net;
namespace Enviar_e_mail_Consola_04_cs
{
class Program
{
static void Main(string[] args)
{
string usuario, contraseña, destinatario, asunto, mensaje;
// Título de la ventana.
Console.Title = "Enviar e-mail con Consola C#";
// Tamaño ventana consola.
Console.WindowWidth = 80; // X. Ancho.
Console.WindowHeight = 40; // Y. Alto.
// Tamaño del cursor. Del 1 al 100.
Console.CursorSize = 50;
// Título del programa.
Console.WriteLine("\t\t----------------------------------------");
Console.WriteLine("\t\t\tEnviar Correo Electrónico");
Console.WriteLine("\t\t----------------------------------------");
try
{
Console.WriteLine("\n");
Console.Write("\t\tIngresar tu correo electrónico: ");
usuario = Console.ReadLine();
Console.Write("\t\tIntroducir contraseña: ");
contraseña = LeerPassword();
Console.Write("\t\tDestinatario: ");
destinatario = Console.ReadLine();
Console.Write("\t\tAsunto: ");
asunto = Console.ReadLine();
Console.Write("\t\tMensaje: ");
mensaje = Console.ReadLine();
MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje);
SmtpClient servidor = new SmtpClient("smtp.gmail.com")
{
Port = 587
};
NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
servidor.Credentials = credenciales;
servidor.EnableSsl = true;
Console.WriteLine("\t\tEnviando correo...");
servidor.Send(correo);
Console.WriteLine("\t\tCorreo enviado satisfactoriamente.");
correo.Dispose();
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine("\t\t" + ex.Message);
Console.WriteLine("\t\tNo se ha enviado el correo.");
Console.ReadKey();
}
}
// A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla.
public static string LeerPassword()
{
ConsoleKeyInfo cki;
StringBuilder sb = new StringBuilder();
int contador = 0;
do
{
cki = Console.ReadKey(true);
if (cki.Key != ConsoleKey.Enter)
{
sb.Append(cki.KeyChar);
if (contador < 4)
{
Console.Write("*");
}
contador++;
}
else
{
break;
}
} while (true);
Console.WriteLine();
return sb.ToString();
}
}
}
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;
}
}
}
}
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;
}
}
}
}
Console.WriteLine(oMessage.Headers.MessageId);