Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Meta en 8 Junio 2022, 19:48 pm



Título: Ya no me deja enviar email en consola C# ni en gamail ni hotmail
Publicado por: Meta en 8 Junio 2022, 19:48 pm
Hace meses me funcionaba este programa por gmail, antes tenía que configurar este enlace activado para que puedas enviar mensajes desde la consola C#. Luego probé por hotmail, también me funcionaba, ni uno ni otro.

En gmail había que poner este enlace. https://myaccount.google.com/lesssecureapps

En hotmail, no había que modificar nada.

En este ejemplo pongo ahora hotmail.
(https://i.stack.imgur.com/fpCTK.jpg)

Código Consola para el hotmail.
Código
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Net.Mail;
  5. using System.Text;
  6.  
  7. namespace Enviar_email_Consola_08
  8. {
  9.    internal class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.  
  14.  
  15.            // Variables.
  16.            string usuario, contraseña, destinatario, asunto, mensaje;
  17.            const int MAXIMA_LONGITUD = 40000;
  18.  
  19.            #region Configuración ventana.
  20.            // Título de la ventana y versión del .Net usando.
  21.            Console.Title = "Gestor correo electrónico Hotmail. "
  22.                + typeof(string).Assembly.ImageRuntimeVersion;
  23.  
  24.            // Tamaño de la ventana, x, y, o ancho y alto.
  25.            const byte ancho = 80;
  26.            const byte alto = 25;
  27.            Console.SetWindowSize(ancho, alto);
  28.  
  29.            // Color de fondo.
  30.            Console.BackgroundColor = ConsoleColor.Black;
  31.  
  32.            // Color de las letras.
  33.            Console.ForegroundColor = ConsoleColor.Gray;
  34.  
  35.            // Limpiar pantalla y dejarlo todo en color de fondo.
  36.            Console.Clear();
  37.  
  38.            // Visible el cursor.
  39.            Console.CursorVisible = true;
  40.            #endregion
  41.  
  42.            // Título del programa.
  43.            Console.WriteLine("\t\t----------------------------------------");
  44.            Console.WriteLine("\t\t\tEnviar Correo Electrónico");
  45.            Console.WriteLine("\t\t----------------------------------------");
  46.  
  47.            try
  48.            {
  49.  
  50.                Console.WriteLine("\n");
  51.                Console.ForegroundColor = ConsoleColor.Cyan;
  52.                Console.Write("\t\tTu correo electrónico: ");
  53.                Console.ForegroundColor = ConsoleColor.Gray;
  54.                usuario = Console.ReadLine();
  55.                Console.WriteLine();
  56.                Console.ForegroundColor = ConsoleColor.Cyan;
  57.                Console.Write("\t\tIntroducir contraseña: ");
  58.                Console.ForegroundColor = ConsoleColor.Gray;
  59.                contraseña = LeerPassword();
  60.                Console.WriteLine();
  61.                Console.ForegroundColor = ConsoleColor.Cyan;
  62.                Console.Write("\t\tDestinatario: ");
  63.                Console.ForegroundColor = ConsoleColor.Gray;
  64.                destinatario = Console.ReadLine();
  65.                Console.WriteLine();
  66.                Console.ForegroundColor = ConsoleColor.Cyan;
  67.                Console.Write("\t\tAsunto: ");
  68.                Console.ForegroundColor = ConsoleColor.Gray;
  69.                asunto = Console.ReadLine();
  70.                Console.WriteLine();
  71.                Console.ForegroundColor = ConsoleColor.Cyan;
  72.                Console.Write("\t\tMensaje: ");
  73.                Console.ForegroundColor = ConsoleColor.Gray;
  74.                //mensaje = Console.ReadLine();
  75.  
  76.                #region Enviar más de 255 caracteres.
  77.                // #########################################################################
  78.                Stream entradaDeDatos = Console.OpenStandardInput();
  79.                byte[] buffer = new byte[MAXIMA_LONGITUD];
  80.                int numerosBytesLeidos = entradaDeDatos.Read(buffer, 0, MAXIMA_LONGITUD);
  81.                char[] chars = Console.InputEncoding.GetChars(buffer, 0, numerosBytesLeidos);
  82.                mensaje = new string(chars);
  83.                // #########################################################################
  84.                #endregion
  85.  
  86.                Console.WriteLine();
  87.                Console.ForegroundColor = ConsoleColor.DarkCyan;
  88.                Console.Write("\t\tCantidad de texto introducido: ");
  89.                Console.ForegroundColor = ConsoleColor.Gray;
  90.                Console.WriteLine(mensaje.Length);
  91.  
  92.                MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje)
  93.                {
  94.                    // Enviar textos con tildes.
  95.                    BodyEncoding = Encoding.UTF8
  96.                };
  97.  
  98.                SmtpClient servidor = new SmtpClient("smtp.live.com")
  99.                {
  100.                    Port = 25 // 25 ó 465.
  101.                };
  102.                NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
  103.                servidor.Credentials = credenciales;
  104.                servidor.EnableSsl = true;
  105.  
  106.                Console.WriteLine();
  107.                Console.ForegroundColor = ConsoleColor.Yellow;
  108.                Console.WriteLine("\t\tEnviando correo...");
  109.                servidor.Send(correo);
  110.                Console.WriteLine();
  111.                Console.ForegroundColor = ConsoleColor.Green;
  112.                Console.WriteLine("\t\t¡Correo enviado satisfactoriamente!");
  113.                correo.Dispose();
  114.                Console.CursorVisible = false;
  115.                Console.ReadKey();
  116.            }
  117.            catch (Exception ex)
  118.            {
  119.                Console.ForegroundColor = ConsoleColor.Red;
  120.                Console.WriteLine("ERROR: \n");
  121.                Console.WriteLine("\t\t" + ex.Message);
  122.                Console.WriteLine();
  123.                Console.ForegroundColor = ConsoleColor.Yellow;
  124.                Console.WriteLine("\t\tNo se ha enviado el correo.");
  125.                Console.ReadKey();
  126.            }
  127.  
  128.        }
  129.  
  130.        // A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla.
  131.        public static string LeerPassword()
  132.        {
  133.            ConsoleKeyInfo cki;
  134.            StringBuilder sb = new StringBuilder();
  135.            int contador = 0;
  136.  
  137.            do
  138.            {
  139.                cki = Console.ReadKey(true);
  140.                if (cki.Key != ConsoleKey.Enter)
  141.                {
  142.  
  143.                    sb.Append(cki.KeyChar);
  144.                    if (contador < 1)
  145.                    {
  146.                        Console.Write("*");
  147.                    }
  148.                    contador++;
  149.                }
  150.  
  151.                else
  152.                {
  153.                    break;
  154.                }
  155.  
  156.            } while (true);
  157.            Console.WriteLine();
  158.            return sb.ToString();
  159.        }
  160.    }
  161. }

¿Alguna idea para corregir solucionar el problema?

Al menos quiero saber si realmente se puede vovler a enviar email con tu propio programa o ya los servidores de ellos tanto como gmail y hotmail no les da la gana de dejarnos.


Título: Re: Ya no me deja enviar email en consola C# ni en gamail ni hotmail
Publicado por: el-brujo en 9 Junio 2022, 11:23 am
https://foro.elhacker.net/net_c_vbnet_asp/ya_no_puedo_enviar_email_con_c-t515124.0.html;msg2261660#msg2261660