|
151
|
Programación / .NET (C#, VB.NET, ASP) / Re: ¿Cómo enviar más de 255 letras?
|
en: 28 Diciembre 2021, 23:41 pm
|
Muy buen planteamiento. Muchísimas gracias, ya me sirvió. Dejo el código completo por si alguien lo necesita. Funciona todo al 100 %, con tildes incluidos. using System; using System.IO; using System.Net; using System.Net.Mail; using System.Text; namespace Enviar_email_Consola_07 { internal class Program { static void Main(string[] args) { // Variables. string usuario, contraseña, destinatario, asunto, mensaje; const int MAXIMA_LONGITUD = 2048; #region Configuración ventana. // Título de la ventana. Console.Title = "Gestor correo electrónico"; // Tamaño de la ventana, x, y. Console.SetWindowSize(80, 25); // Color de fondo. Console.BackgroundColor = ConsoleColor.Black; // Color de las letras. Console.ForegroundColor = ConsoleColor.Gray; // Limpiar pantalla y dejarlo todo en color de fondo. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; #endregion // 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.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tTu correo electrónico: "); Console.ForegroundColor = ConsoleColor.Gray; usuario = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tIntroducir contraseña: "); Console.ForegroundColor = ConsoleColor.Gray; contraseña = LeerPassword(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tDestinatario: "); Console.ForegroundColor = ConsoleColor.Gray; destinatario = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tAsunto: "); Console.ForegroundColor = ConsoleColor.Gray; asunto = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tMensaje: "); Console.ForegroundColor = ConsoleColor.Gray; //mensaje = Console.ReadLine(); #region Enviar más de 255 caracteres. // Enviar mensaje de más de 255 caracteres. ################################ Stream inputStream = Console.OpenStandardInput(); byte[] buffer = new byte[MAXIMA_LONGITUD ]; int numerosBytesLeidos = inputStream.Read(buffer, 0, MAXIMA_LONGITUD); char[] chars = Console.InputEncoding.GetChars(buffer, 0, numerosBytesLeidos); mensaje = new string(chars ); // ######################################################################### #endregion Console.WriteLine(); Console.ForegroundColor = ConsoleColor.DarkCyan; Console.Write("\t\tCantidad de texto introducido: "); Console.ForegroundColor = ConsoleColor.Gray; Console.WriteLine(mensaje.Length); 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(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t\tEnviando correo..."); servidor.Send(correo); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\t\tCorreo enviado satisfactoriamente."); correo.Dispose(); Console.CursorVisible = false; Console.ReadKey(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("ERROR: \n"); Console.WriteLine("\t\t" + ex.Message); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Yellow; 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 < 1) { Console.Write("*"); } contador++; } else { break; } } while (true); Console.WriteLine(); return sb.ToString(); } } }
Que tengan buen fin de lo que queda de año.
|
|
|
154
|
Programación / .NET (C#, VB.NET, ASP) / Escribir bien las tildes, ñ y demás
|
en: 26 Diciembre 2021, 16:28 pm
|
Hola: Quiero hacer este ejemplo y no muestra bien los caracteres en consola. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Codificación_UTF_8_01 { internal class Program { static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Encoder UTF-8"; // Tamaño de la ventana, x, y. Console.SetWindowSize(80, 25); // Color de fondo. Console.BackgroundColor = ConsoleColor.Gray; // Color de las letras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla y dejarlo todo gris. Console.Clear(); // Visible el cursor. Console.CursorVisible = true; #endregion // Cree una codificación UTF-8. UTF8Encoding utf8 = new UTF8Encoding (); // Una cadena Unicode con dos caracteres fuera de un rango de código de 8 bits. String unicodeString = "Esta cadena Unicode tiene 2 caracteres fuera del " + "rango ASCII:\n" + "Pi (\u03a0), y Sigma (\u03a3)."; Console.WriteLine("Cadena original:"); Console.WriteLine(unicodeString); // Codifica la cadena. Byte[] encodedBytes = utf8.GetBytes(unicodeString); Console.WriteLine(); Console.WriteLine("Bytes codificados:"); for (int ctr = 0; ctr < encodedBytes.Length; ctr++) { Console.Write("{0:X2} ", encodedBytes[ctr]); if ((ctr + 1) % 25 == 0) Console.WriteLine(); } Console.WriteLine(); // Decodifica bytes de nuevo a cadena. String decodedString = utf8.GetString(encodedBytes); Console.WriteLine(); Console.WriteLine("Bytes decodificados:"); Console.WriteLine(decodedString); // Pulse cualquier tecla para salir. Console.ReadKey(); } } }
Dejo aquí la captura. Ni copiando el propio código de MicroSoft funciona. Saludos.
|
|
|
155
|
Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda como integrar *.py en C#
|
en: 26 Diciembre 2021, 14:56 pm
|
Hola: Así sin más nunca lo he hecho. Lo que he hecho y hice un documento, es crear una dll de C++ nativo y que lo lea C#. O lo que es lo mismo de lo que quieres hacer. Crear una dll hecho con Python y lo lea C#. Revisa el documento si es así lo que deseas. En este ejemmplo es mostrar un texto y una suma cuya funciones está en C++ con una dll y C# lo llama para mostrar los datos. También se puede crear controles visuales. Es así lo más parecido que te puedo ayudar. Saludos.
|
|
|
156
|
Programación / .NET (C#, VB.NET, ASP) / Re: Comunicación SerialPort concurrente
|
en: 26 Diciembre 2021, 04:31 am
|
Felices fiestas. ¿Tienes claro que comandos envias y qué esperas recibir de él? Puedes hacer una mini lista sobre comandos aquí para poder hacer ejemplos. Si usas el Windows Form, añades un botón en el formulario, hablando en C# para este ejemplo, para enviar comandos es así. private void button_Activar_Click(object sender, EventArgs e) { byte[] mBuffer = Encoding.ASCII.GetBytes("EncenderLed"); // Comando a enviar. serialPort1.Write(mBuffer, 0, mBuffer.Length); }
Al recibir datos es así. // Al recibir datos. private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { // Acumula los caracteres recibidos a nuestro 'buffer' (string). recibidos += serialPort1.ReadExisting(); // Invocar o llamar al proceso de tramas. Invoke (new EventHandler (Actualizar )); }
No olvidar que cada comando recibido, debes vaciar la variable para que no se concatenen, que luego no funciona. // Limpiar. recibidos = "";
Ya nos contarás más información sobre ello. Que dispositivos es y si te sabes realmente los comandos y respuestas a enviar o lo haces tuyo propio o viene en documentación del dispositivo. Saludos.
|
|
|
157
|
Programación / .NET (C#, VB.NET, ASP) / Re: C# Ejecutar archivo .bat
|
en: 26 Diciembre 2021, 04:02 am
|
Buenas y felices fiestas 2021. En este código de abajo, añades el programa CMD.exe y luego el comando como apagar el PC o ordenador en 60 segundos. ProcessStartInfo info = new ProcessStartInfo ("cmd", "c/ shutdown -s -t 60");
En el Windows Form con Visual Studio Community 2022 gratuito. Añades dos botones. Este es su código completo para que te hagas una idea, se incluye más código para que no muestre la ventana del cmd a la hora de ejecutarlo. using System; using System.Diagnostics; using System.Windows.Forms; namespace Apagar_PC_con_botones_y_cancelar_01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button_Apagar_Click(object sender, EventArgs e) { ProcessStartInfo info = new ProcessStartInfo ("cmd", "c/ shutdown -s -t 60"); info.UseShellExecute = false; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process.Start(info); } private void button_Cancelar_Click(object sender, EventArgs e) { ProcessStartInfo info = new ProcessStartInfo ("cmd", "c/ shutdown -a"); info.UseShellExecute = false; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process.Start(info); } } }
¿Es lo qué buscas? Saludos.
|
|
|
159
|
Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda como integrar *.py en C#
|
en: 26 Diciembre 2021, 03:53 am
|
Hola:
¿Exactamente qué te refieres?
¿Adaptar código de Python a C#?
¿Añadir código de Python de un archivo externo o un trozo de código directamente etiquetado incrustado en C# por medio?
¿Una dll hecho con Python (que yo sepa no se puede) y lo lee C#?
Saludos.
|
|
|
160
|
Programación / .NET (C#, VB.NET, ASP) / ¿Cómo enviar más de 255 letras?
|
en: 26 Diciembre 2021, 02:39 am
|
Buenas: Quiero enviar un email en modo consola que supere los 255 caracteres tal como se hace en cualquier navegador. ¿Es posible hacerlo? Aquí dejo un ejemplo con Ggail. // Activar / desactivar Acceso de aplicaciones poco seguras en Google. // https://myaccount.google.com/lesssecureapps
using System; using System.IO; using System.Net; using System.Net.Mail; using System.Text;
namespace Enviar_email_Consola_07 { internal class Program { static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Gestor correo electrónico";
// Tamaño de la ventana, x, y. Console.SetWindowSize(80, 25);
// Color de fondo. Console.BackgroundColor = ConsoleColor.Black;
// Color de las letras. Console.ForegroundColor = ConsoleColor.Gray;
// Limpiar pantalla y dejarlo todo en color de fondo. Console.Clear();
// Visible el cursor. Console.CursorVisible = true; #endregion
// Variables. string usuario, contraseña, destinatario, asunto, mensaje;
// 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.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tTu correo electrónico: "); Console.ForegroundColor = ConsoleColor.Gray; usuario = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tIntroducir contraseña: "); Console.ForegroundColor = ConsoleColor.Gray; contraseña = LeerPassword(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tDestinatario: "); Console.ForegroundColor = ConsoleColor.Gray; destinatario = Console.ReadLine(); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tAsunto: "); Console.ForegroundColor = ConsoleColor.Gray; asunto = Console.ReadLine(); Console.WriteLine();
//---------------------------------------------- byte[] bytes = new byte[2000]; // Nuevo tamanho máximo. Stream inputStream = Console.OpenStandardInput(bytes.Length); Console.SetIn(new StreamReader(inputStream)); //----------------------------------------------
Console.ForegroundColor = ConsoleColor.Cyan; Console.Write("\t\tMensaje: "); Console.ForegroundColor = ConsoleColor.Gray; mensaje = Console.ReadLine(); Console.WriteLine();
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(); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\t\tEnviando correo..."); servidor.Send(correo); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\t\tCorreo enviado satisfactoriamente."); correo.Dispose(); Console.CursorVisible = false; Console.ReadKey(); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("ERROR: \n"); Console.WriteLine("\t\t" + ex.Message); Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Yellow; 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(); } } } Felices fiestas camaradas.
|
|
|
|
|
|
|