elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 229
141  Programación / .NET (C#, VB.NET, ASP) / Re: Menús en modo consola en: 5 Febrero 2019, 22:47
Buenas:

Me ha servido el truco para el código de arriba. Ahora haciendo un menú de solo usar 16x2 de resolusión. Hago este código base.

En este caso lo que hace es seleccionar opciones en el menú, pero no hace nada más. Las opciones en el menú se llama.

Menú ▲▼

1. UNO
2. DOS
3. TRES
4. CUATRO
5. ESC - SALIR

Por ejemplo, seleccionamos el 3. TRES. Pulse Enter y justo una línea de abajo dice:

3. TRES ▲▼

Después de pulsar Enter, se sustituye el texto 3. TRES ▲▼ por otro abajo.

Alum. ●●●●●●○○

En el cual podemos hacer cosas, estando ya en la subopción indicado arriba. Si pulsamos Enter, de Alum. ●●●●●●○○ vuelve al menú principal en este caso donde estaba, llamdo 3. TRES ▲▼. Si etás todavía en Alum. ●●●●●●○○, puedes pulsar la teclas arriba y abajo para mover las opciones indicadas de esta manera mostrada abajo.

Son 8 puntos. Lo que hace es alumbrar el brillo de una luz, el brillo más débil es de esta manera. Alum. ○○○○○○○○. El brillo máximo es de otra manera, Alum. ●●●●●●●●. Con las flechas del teclado arriba y abajo, seleccionamos un punto, de 1 hasta 8. La mitad sería así: Alum. ●●●●○○○○. Pulsa enter, guarda la configuración en una variable para que la recuerde y sale al menú principal.

Espero que se entienda lo que quiero hacer.

Dejo el código base, solo selecciona opciones pero al pulsar Enter tiene que hacer al menos el 3. TRES.

Código consola C#:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Menu_consola_09_cs
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            // Título de la ventana.
  14.            Console.Title = "Menú de opciones";
  15.  
  16.            // Tamaño ventana consola.
  17.            // X anchura.
  18.            Console.WindowWidth = 16;
  19.  
  20.            // Y altura.
  21.            Console.WindowHeight = 2;
  22.  
  23.            // Oculto el cursor.
  24.            Console.CursorVisible = false;
  25.  
  26.            // Contador de teclas y navegador.
  27.            int contador = 0;
  28.  
  29.            // Capturar tecla para luego validar.
  30.            ConsoleKey tecla;
  31.  
  32.            do
  33.            {
  34.  
  35.                //******************************************************************
  36.                // Dibujo el menú.
  37.  
  38.                // Rellenar fondo verde.
  39.                Console.BackgroundColor = ConsoleColor.Green;
  40.  
  41.                // Letras negras.
  42.                Console.ForegroundColor = ConsoleColor.Black;
  43.  
  44.                // Limpiar pantalla.
  45.                Console.Clear();
  46.  
  47.                if (contador == 0)
  48.                {
  49.                    Console.SetCursorPosition(0, 0);
  50.                    Console.Write("MENú ▲▼");
  51.                }
  52.  
  53.                if (contador == 1)
  54.                {
  55.                    Console.SetCursorPosition(0, 0);
  56.                    Console.WriteLine("1.   UNO");
  57.                }
  58.  
  59.                if (contador == 2)
  60.                {
  61.                    Console.SetCursorPosition(0, 0);
  62.                    Console.WriteLine("2.   DOS");
  63.                }
  64.  
  65.                if (contador == 3)
  66.                {
  67.                    Console.SetCursorPosition(0, 0);
  68.                    Console.WriteLine("3.   TRES");
  69.                }
  70.  
  71.                if (contador == 4)
  72.                {
  73.                    Console.SetCursorPosition(0, 0);
  74.                    Console.WriteLine("4.  CUATRO");
  75.                }
  76.  
  77.                if (contador == 5)
  78.                {
  79.                    Console.SetCursorPosition(0, 0);
  80.                    Console.WriteLine("5. ESC = SALIR");
  81.                }
  82.  
  83.                // Fin de pintar el menú.
  84.                //******************************************************************
  85.  
  86.                // Leer tecla ingresada por el usuario.
  87.                tecla = Console.ReadKey(true).Key;
  88.  
  89.                //validar el tipo de tecla
  90.                if (tecla == ConsoleKey.DownArrow)
  91.                {
  92.                    contador += 1;
  93.                }
  94.  
  95.                if (tecla == ConsoleKey.UpArrow)
  96.                {
  97.                    contador -= 1;
  98.                }
  99.  
  100.                // Si está en la última opción, salta a la primera.
  101.                if (contador > 5)
  102.                {
  103.                    contador = 0;
  104.                }
  105.  
  106.                // Si está en la primera posición, salta a la última.
  107.                if (contador < 0)
  108.                {
  109.                    contador = 5;
  110.                }
  111.  
  112.                // Uso la tecla escape como salida.
  113.            } while (tecla != ConsoleKey.Escape);
  114.        }
  115.    }
  116. }


Captura:


Una cosa a tener en cuenta. En vez de aparecer

MENú ▲▼

En pantalla, lo primero que debe aparecer en el programa en HOLA. Si pulsas Enter, entonces ya aparece el Menú. Si pulsa salir apareces en HOLA. Luego hacer lo demás con el 3. TRES indicado arriba.

¿Alguna ayuda?

Saludos.
142  Programación / .NET (C#, VB.NET, ASP) / Re: Menús en modo consola en: 4 Febrero 2019, 21:17
Muchas gracias. En Windows 10, "Mapa de carácteres" saqué todo. ;)
143  Programación / .NET (C#, VB.NET, ASP) / Menús en modo consola en: 3 Febrero 2019, 08:54
Hola:

Estoy usando la consola de C#, me dio ahora por el retro.



Hice este menú de opciones, pero no hace nada. Por ahora solo selecciona las opciones.

Lo que no se es como entrar en otra opción dentro de ella en DOS al pulsar Enter.

Estoy en el submenú que sale un menaje que diga. Estoy dentro de la opción DOS. Con capacidad de pulsar Escape y vuelva al menú principal.

Lo que he hecho hasta ahora es solo esto.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Menu_consola_02_cs
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            // Título de la ventana.
  14.            Console.Title = "Menú de opciones";
  15.  
  16.            // Tamaño ventana consola.
  17.            Console.WindowWidth = 20; // X anchura.
  18.            Console.WindowHeight = 8; // Y altura.
  19.  
  20.            // Cursor invisible.
  21.            Console.CursorVisible = false;
  22.  
  23.            //Contador de teclas y navegador
  24.            int contador = 0;
  25.            //tomar la tecla para validar luego
  26.            ConsoleKey tecla;
  27.            //escondo el cursor
  28.            Console.CursorVisible = false;
  29.            do
  30.            {
  31.                //******************************************************************
  32.                //Pinto el menú
  33.                Console.Clear();
  34.                Console.Write("&#9556;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9559;\n");
  35.                if (contador == 0)
  36.                {
  37.                    Console.BackgroundColor = ConsoleColor.White;
  38.                    Console.ForegroundColor = ConsoleColor.Black;
  39.                    Console.Write("&#9553;   UNO            &#9553;\n");
  40.                    Console.BackgroundColor = ConsoleColor.Black;
  41.                    Console.ForegroundColor = ConsoleColor.White;
  42.                }
  43.                else
  44.                {
  45.                    Console.BackgroundColor = ConsoleColor.Black;
  46.                    Console.ForegroundColor = ConsoleColor.White;
  47.                    Console.Write("&#9553;   UNO            &#9553;\n");
  48.                }
  49.                if (contador == 1)
  50.                {
  51.                    Console.BackgroundColor = ConsoleColor.White;
  52.                    Console.ForegroundColor = ConsoleColor.Black;
  53.                    Console.Write("&#9553;   DOS            &#9553;\n");
  54.                    Console.BackgroundColor = ConsoleColor.Black;
  55.                    Console.ForegroundColor = ConsoleColor.White;
  56.                }
  57.                else
  58.                {
  59.                    Console.BackgroundColor = ConsoleColor.Black;
  60.                    Console.ForegroundColor = ConsoleColor.White;
  61.                    Console.Write("&#9553;   DOS            &#9553;\n");
  62.                }
  63.                if (contador == 2)
  64.                {
  65.                    Console.BackgroundColor = ConsoleColor.White;
  66.                    Console.ForegroundColor = ConsoleColor.Black;
  67.                    Console.Write("&#9553;   TRES           &#9553;\n");
  68.                    Console.BackgroundColor = ConsoleColor.Black;
  69.                    Console.ForegroundColor = ConsoleColor.White;
  70.                }
  71.                else
  72.                {
  73.                    Console.BackgroundColor = ConsoleColor.Black;
  74.                    Console.ForegroundColor = ConsoleColor.White;
  75.                    Console.Write("&#9553;   TRES           &#9553;\n");
  76.                }
  77.                if (contador == 3)
  78.                {
  79.                    Console.BackgroundColor = ConsoleColor.White;
  80.                    Console.ForegroundColor = ConsoleColor.Black;
  81.                    Console.Write("&#9553;   CUATRO         &#9553;\n");
  82.                    Console.BackgroundColor = ConsoleColor.Black;
  83.                    Console.ForegroundColor = ConsoleColor.White;
  84.                }
  85.                else
  86.                {
  87.                    Console.BackgroundColor = ConsoleColor.Black;
  88.                    Console.ForegroundColor = ConsoleColor.White;
  89.                    Console.Write("&#9553;   CUATRO         &#9553;\n");
  90.                }
  91.                if (contador == 4)
  92.                {
  93.                    Console.BackgroundColor = ConsoleColor.White;
  94.                    Console.ForegroundColor = ConsoleColor.Black;
  95.                    Console.Write("&#9553;   ESC = SALIR    &#9553;\n");
  96.                    Console.BackgroundColor = ConsoleColor.Black;
  97.                    Console.ForegroundColor = ConsoleColor.White;
  98.                }
  99.                else
  100.                {
  101.                    Console.BackgroundColor = ConsoleColor.Black;
  102.                    Console.ForegroundColor = ConsoleColor.White;
  103.                    Console.Write("&#9553;   ESC = SALIR    &#9553;\n");
  104.                }
  105.                Console.Write("&#9562;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9552;&#9565;\n");
  106.                //Fin de pintar el menú
  107.                //******************************************************************
  108.  
  109.                //leer tecla ingresada por el usuario
  110.                tecla = Console.ReadKey(true).Key;
  111.  
  112.                //validar el tipo de tecla
  113.                if (tecla == ConsoleKey.DownArrow)
  114.                {
  115.                    contador += 1;
  116.                }
  117.                if (tecla == ConsoleKey.UpArrow)
  118.                {
  119.                    contador -= 1;
  120.                }
  121.                //valido que el conteo de teclas no supere el rango establecido por los Ifs de más arriba
  122.                if (contador > 4)
  123.                {
  124.                    contador = 4;
  125.                }
  126.                if (contador < 0)
  127.                {
  128.                    contador = 0;
  129.                }
  130.                //uso la tecla escape como salida
  131.            } while (tecla != ConsoleKey.Escape);
  132.        }
  133.    }
  134. }
  135.  

No logro cuajarlo como si se ha hecho por aquí en este otro ejemplo de abajo.

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Menu_y_opciones_consola_02_cs
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            // Título de la ventana.
  14.            Console.Title = "Menú y opciones C# 2017";
  15.  
  16.            // Tamaño ventana consola.
  17.            Console.WindowWidth = 30; // X. Ancho.
  18.            Console.WindowHeight = 17; // Y. Alto.
  19.  
  20.            // Cursor invisible.
  21.            Console.CursorVisible = false;
  22.  
  23.            // Cuadro doble borde ventana.
  24.            Menu_y_opciones_consola_02_cs.Cuadro.cuadrado();
  25.  
  26.            // Posición del mansaje en la ventana.
  27.            Console.SetCursorPosition(2, 2);
  28.            Console.WriteLine("Elija una opción:");
  29.            Console.WriteLine("");
  30.            Console.SetCursorPosition(2, 4);
  31.            Console.WriteLine("1 - Opción A.");
  32.            Console.SetCursorPosition(2, 5);
  33.            Console.WriteLine("2 - Opción B.");
  34.            Console.SetCursorPosition(2, 6);
  35.            Console.WriteLine("3 - Opción C.");
  36.            Console.SetCursorPosition(2, 7);
  37.            Console.WriteLine("Escape - Salir.");
  38.            Console.SetCursorPosition(2, 8);
  39.            Console.Write("===============");
  40.  
  41.            ConsoleKey key;
  42.  
  43.            do
  44.            {
  45.                // Cursor invisible
  46.                Console.CursorVisible = false;
  47.  
  48.                // Lee cualquier tecla.
  49.                key = Console.ReadKey(true).Key;
  50.  
  51.                // Variable de mensaje vacío.
  52.                string mensaje = string.Empty;
  53.  
  54.                // Leer tecla selecconada por el usuario.
  55.                switch (key)
  56.                {
  57.                    case ConsoleKey.D1: // Tecla principal 1.
  58.                    case ConsoleKey.NumPad1: // Tecla extendida 1.
  59.                        Console.SetCursorPosition(2, 10);
  60.                        mensaje = "OPCIÓN A."; // Mostrar mensaje en pantalla.
  61.                        break;
  62.  
  63.                    case ConsoleKey.D2:
  64.                    case ConsoleKey.NumPad2:
  65.                        mensaje = "OPCIÓN B.";
  66.                        break;
  67.                    case ConsoleKey.D3:
  68.                    case ConsoleKey.NumPad3:
  69.                        mensaje = "OPCIÓN C.";
  70.                        break;
  71.                }
  72.  
  73.                // Posición de los mensajes.
  74.                Console.SetCursorPosition(2, 10);
  75.                Console.Write("             "); // 13 espacios.
  76.                Console.SetCursorPosition(2, 10);
  77.                Console.Write(mensaje);
  78.  
  79.            }
  80.  
  81.            // Salir de la plicación al pulsar la tecla Escape o número 4.
  82.            while (key != ConsoleKey.Escape);
  83.  
  84.  
  85.        }
  86.    }
  87. }
  88.  

Saludos.
144  Programación / .NET (C#, VB.NET, ASP) / Cambiar opción de una Web desde C# en: 21 Enero 2019, 06:44
Hola gente del foro:

Que pasen buen comienzo del 2.019. ;)

Quiero hacer con Windows Form cambiar de opción de una Web de gmail. En este caso pongo el enlace.

https://myaccount.google.com/lesssecureapps

Desde la Web puedo poner o No.

¿Existe esta posibilidad controlar esa opción desde C#?

Por supuesto que tendrás que poner en C# los datos la cuenta gmail, eso seguro.

Saludos.
145  Programación / .NET (C#, VB.NET, ASP) / Re: Como puedo compilar un archivo en Visual Studio a .exe en: 16 Enero 2019, 06:43
Si tienes el IDE abierto, pulsa F5.
146  Programación / .NET (C#, VB.NET, ASP) / Re: Enviar email con C# en: 13 Enero 2019, 13:11
Hola:

Es un puntazo hacer lo mismo con el PowerShell. Me alegro que lo hicieras. Quiero ver el código completo si no te importa.

Estaba un tiempo con él y me moló.
Lo único que he hecho con él hasta ahora son tonterías como abrir y cerrar la bandeja del disco DVD del lector, tanto en modo consola como modo visual.

Eso si, hecho gracias por los compañeros de este foro poco a poco.

Modo consola PowerShell
Código:
$MemDef = @"
[DllImport("winmm.dll", CharSet = CharSet.Ansi)]
   public static extern int mciSendStringA(
   string lpstrCommand,
   string lpstrReturnString,
   int uReturnLength,
   IntPtr hwndCallback);
"@

$winnm = Add-Type -memberDefinition $MemDef -ErrorAction 'SilentlyContinue' -passthru -name mciSendString
function Set-CDAudioDoor {
 Param(
  [ValidateSet("open", "closed")][String[]]$Mode = 'open'
 )
 $winnm::mciSendStringA("set cdaudio door $mode", $null, 0,0)}

function mostrarMenu
{
     param ([string]$Titulo = ' Control bandeja del lector ',
     [string]$PS = ' PowerShell              ')
     cls
     Write-Host "╔====================================╗"
     Write-Host "║           $PS║"
     Write-Host "╠====================================╣"
     Write-Host "║    $Titulo    ║"
     Write-Host "╠====================================╣"
     Write-Host "║                                    ║"
     Write-Host "║    A) Abrir.                       ║"
     Write-Host "║    C) Cerrar.                      ║"
     Write-Host "║    I) Información.                 ║"
     Write-Host "║    S) Presiona 'S' para salir.     ║"
     Write-Host "║                                    ║"
     Write-Host "╚====================================╝"
}

do
{
     mostrarMenu
     $input = Read-Host "      Elegir una Opción"
     switch ($input)
     {
           'a' {
                cls
                'Abriendo...'
                Set-CDAudioDoor open
                cls
                'Abierto.'
           } 'c' {
                cls
                'Cerrando...'
                Set-CDAudioDoor closed
                cls
                'Cerrado.'
           } 'i' {
                cls
                'PowerShell'
                '=========='
                Get-Host
                'Electrónica PIC'
                '==============='
                ''
                'e-mail: metaconta@gmail.com'
                ''
                #pause
           } 's' {
                return
           } 
     }
     pause
}
until ($input -eq 's')

Modo Visual en PowerShell.
Código:
$Diskmaster = New-Object -ComObject IMAPI2.MsftDiscMaster2           
$DiskRecorder = New-Object -ComObject IMAPI2.MsftDiscRecorder2           
$DiskRecorder.InitializeDiscRecorder($DiskMaster)

function Set-CDAudioDoor {
 Param(
  [ValidateSet("open", "closed")][String[]]$mode
 )
 if ($mode -eq 'open'){
    $label_Mensaje.Text = "Abriendo..."
    $DiskRecorder.EjectMedia()
    $label_Mensaje.Text = "Abierto."
    }
 else {
    $label_Mensaje.Text = "Cerrando..."
    $DiskRecorder.CloseTray()
    $label_Mensaje.Text = "Cerrado."
    }
}

# Cargo los Assemblies. (Necesario para definir el form).
[void][reflection.assembly]::loadwithpartialname("System.Windows.Forms")
[void][reflection.assembly]::loadwithpartialname("System.Drawing")

# Formulario.
$Form = New-Object system.Windows.Forms.Form
$Form.Text = "PowerShell 2017"
$Form.Size = New-Object system.Drawing.Size(300, 300)
$Form.FormBorderStyle = "FixedDialog"
$Form.TopMost = $true
$Form.MaximizeBox = $false
$Form.MinimizeBox = $false
$Form.ControlBox = $true
$Form.StartPosition = "CenterScreen"
$Form.Font = "Segoe UI"

# Botón abrir.
$button_Abrir = New-Object system.windows.Forms.Button
$button_Abrir.Text = "Abrir"
$button_Abrir.Width = 75
$button_Abrir.Height = 23
$button_Abrir.location = new-object system.drawing.point(40, 150)
$button_Abrir.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($button_Abrir)

# Botón cerrar.
$button_Cerrar = New-Object system.windows.Forms.Button
$button_Cerrar.Text = "Cerrar"
$button_Cerrar.Width = 75
$button_Cerrar.Height = 23
$button_Cerrar.location = new-object system.drawing.point(174, 150)
$button_Cerrar.Font = "Microsoft Sans Serif,10"
$Form.controls.Add($button_Cerrar)

# Label.
$label_Mensaje = New-Object system.windows.Forms.Label
$label_Mensaje.Text = "?"
$label_Mensaje.AutoSize = $true
$label_Mensaje.location = new-object system.drawing.point(20,26)
$label_Mensaje.Size = new-object system.drawing.point(54,10)
$label_Mensaje.Font = "Microsoft Sans Serif, 36, style=Bold"
$Form.controls.Add($label_Mensaje)

# Botón abrir  bandeja.
$button_Abrir.Add_Click({Set-CDAudioDoor open})

# Botón cerrar  bandeja.
$button_Cerrar.Add_Click({Set-CDAudioDoor closed})


[void]$Form.ShowDialog()
$Form.Dispose()

Fuera off-toppic.

No me deja en hotmail, como está vinculado el gmail para la recuperación de cuentas, me salga el mismo mensaje de seguridad en la entrada de hotmail.

Siempre pasa algo que no me deje.
147  Programación / .NET (C#, VB.NET, ASP) / Enviar mensaje de texto a la PS4 en: 13 Enero 2019, 12:07
Hola:

Estaba curioseando si hay alguna manera de enviar mensajes de texto y recibirlo con el PC y la PlayStation 4 usando C#.

Buscando que te busca en el San Google, no veo que lo hayan hecho, me da que no se puede. Si hay alguien que sabe del tema, lo puede confirmar por aquí.

Por aquí dicen que no se puede, pero vete a sabar a día de hoy.
https://www.laps4.com/foro/18_zona_psnetwork/320251-mandar_mensaje_pc.html

Ya dirán si existe esa posibilidad.

Saludos.
148  Programación / .NET (C#, VB.NET, ASP) / Re: Enviar email con C# en: 13 Enero 2019, 10:11
Si no te llegara a entender, choco con la pared. Es importante el enlace que nos proporcinó nuestro compañero.
https://myaccount.google.com/lesssecureapps

Nos dio el enlace directamente, no se que paso hay que darle para llegar a él.

Ahora si funciona con Windows Form.



Código
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Net;       // No olvidar.
  4. using System.Net.Mail;  // No olvidar.
  5.  
  6. namespace Enviar_e_mail_01_cs
  7. {
  8.    public partial class Form1 : Form
  9.    {
  10.        public Form1()
  11.        {
  12.            InitializeComponent();
  13.        }
  14.  
  15.        private void button_Enviar_Click(object sender, EventArgs e)
  16.        {
  17.            // La cadena "servidor" es el servidor de correo que enviará tu mensaje.
  18.            string servidor = comboBox_smtp.SelectedItem.ToString(); // smtp.gmail.com
  19.  
  20.            // Crea el mensaje estableciendo quién lo manda y quién lo recibe.
  21.            MailMessage mensaje = new MailMessage(
  22.               textBox_Emisor.Text,
  23.               textBox_Receptor.Text,
  24.               textBox_Asunto.Text,
  25.               richTextBox_Mensaje.Text);
  26.  
  27.            // Envía el mensaje.
  28.            SmtpClient cliente = new SmtpClient(servidor);
  29.            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
  30.            cliente.UseDefaultCredentials = false;
  31.            cliente.EnableSsl = true;
  32.            cliente.Credentials = new NetworkCredential(textBox_Emisor.Text, textBox_Contraseña.Text); // usuario@gmail.com, Contraseña.
  33.            cliente.Port = Int32.Parse(comboBox_Puerto.Text); ; // 587
  34.            cliente.Host = servidor; // smtp.gmail.com
  35.  
  36.            // Añade credenciales si el servidor lo requiere.
  37.            //cliente.Credentials = CredentialCache.DefaultNetworkCredentials;
  38.            cliente.Send(mensaje);
  39.        }
  40.    }
  41. }

Ahora me toca por mi parte, mejorar el código, hacer el programa más completo.

Por fin funciona. Muchas gracias a todos.


Edito:
Me dio por curiosidad probarlo en modo consola y no funciona, el mismo problema y no se parece nada de los credenciales. Algo no lo veo.


Código
  1. using System;
  2. using System.Net.Mail;
  3. using System.Text;
  4. using System.Net;
  5.  
  6. namespace Enviar_e_mail_Consola_03_cs
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            string usuario, contraseña, destinatario, asunto, mensaje;
  13.  
  14.            // Título de la ventana.
  15.            Console.Title = "Enviar e-mail con Consola C#";
  16.  
  17.            // Tamaño ventana consola.
  18.            Console.WindowWidth = 100; // X. Ancho.
  19.            Console.WindowHeight = 40; // Y. Alto.
  20.  
  21.            Console.WriteLine("\t\t----------------------------------------");
  22.            Console.WriteLine("\t\t\tEnviar Correo Electrónico");
  23.            Console.WriteLine("\t\t----------------------------------------");
  24.  
  25.  
  26.            Console.WriteLine("\n");
  27.            Console.Write("\t\tIngresa tu correo electrónico: ");
  28.            usuario = Console.ReadLine();
  29.            Console.Write("\t\tIngresa tu password: ");
  30.            contraseña = leerPassword();
  31.  
  32.  
  33.            Console.Write("\t\tDestinatario: ");
  34.            destinatario = Console.ReadLine();
  35.            Console.Write("\t\tAsunto: ");
  36.            asunto = Console.ReadLine();
  37.            Console.Write("\t\tMensaje: ");
  38.            mensaje = Console.ReadLine();
  39.  
  40.            MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje);
  41.  
  42.            SmtpClient servidor = new SmtpClient("smtp.gmail.com");
  43.            servidor.Port = 587;
  44.            NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
  45.            servidor.Credentials = credenciales;
  46.            servidor.EnableSsl = true;
  47.  
  48.            try
  49.            {
  50.                Console.WriteLine("Enviando...");
  51.                servidor.Send(correo);
  52.                Console.WriteLine("\t\tCorreo enviado de manera exitosa.");
  53.                correo.Dispose();
  54.                Console.ReadKey();
  55.            }
  56.            catch (Exception ex)
  57.            {
  58.                Console.WriteLine(ex.Message);
  59.                Console.WriteLine("\t\tNo se ha enviado nada.");
  60.                Console.ReadKey();
  61.            }
  62.        }
  63.  
  64.        // A la hora de introducir la contraseña, se sustituye por asterístos (*) en pantalla.
  65.        public static string leerPassword()
  66.        {
  67.            ConsoleKeyInfo cki;
  68.            StringBuilder sb = new StringBuilder();
  69.  
  70.            do
  71.            {
  72.                cki = Console.ReadKey(true);
  73.                if (cki.Key != ConsoleKey.Enter)
  74.                {
  75.                    sb.Append(cki.Key);
  76.                    Console.Write("*");
  77.                }
  78.  
  79.                else
  80.                    break;
  81.  
  82.            } while (true);
  83.            Console.WriteLine();
  84.            return sb.ToString();
  85.        }
  86.    }
  87. }

Por mucho que compare el de Windows Form, no lo pillo.

Saludos.
149  Programación / .NET (C#, VB.NET, ASP) / Re: Enviar email con C# en: 12 Enero 2019, 23:06
Pues así a bote pronto no se me ocurre nada :/

PD: Espero que lo que has dejado en tu anterior post no sea la verdadera contraseña de tu Gmail, por si acaso algún moderador caritativo que lo edite

Lo puse falso la contraseña. Gracias de todas formas.

@Eleкtro (sin pilas) Pinché el enlace que pusiste, aún persiste el problema. :(

Otra cosa, no me quiero entrometer mucho, pero el 2FA(doble factor de autenticacion de gmail) quizás deba tenerlo también desactivado para descartar.

No se nada de ese tema y como hacerlo.

Veo que estás utilizando las DefaultCredentials después de instanciar NetworkCredentials con tus credenciales. Quita toda referencia a las DefaultCredentials y deja el UseDefaultCredentials en false. Por algún momento (creo) que estás enviando la auth equivocada.

Si te refieres esta parte del código.
Código
  1. cliente.Credentials = CredentialCache.DefaultNetworkCredentials;

No se puede poner más nada. Si no es lo que te digo, entonces no se a que te refieres.

No sabía que fuese tan pesado enviar correos con C#.

Saludos.

Edito:
Me está funcionando el código en modo consola, no en Windows Form.

Código
  1. using System;
  2. using System.Text;
  3. using System.Net.Mail; // No olvidar.
  4.  
  5.  
  6. namespace Enviar_e_mail_Consola_02_cs
  7. {
  8.    class Program
  9.    {
  10.        static void Main(string[] args)
  11.        {
  12.            SendMail();
  13.        }
  14.  
  15.        public static Boolean SendMail()
  16.        {
  17.  
  18.            // Título de la ventana.
  19.            Console.Title = "Enviar e-mail con Consola C#";
  20.  
  21.            // Tamaño ventana consola.
  22.            Console.WindowWidth = 100; // X. Ancho.
  23.            Console.WindowHeight = 40; // Y. Alto.
  24.  
  25.            try
  26.            {
  27.                string email = "metaconta@gmail.com";
  28.                //Configuración del Mensaje
  29.                MailMessage mail = new MailMessage();
  30.                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
  31.                //Especificamos el correo desde el que se enviará el Email y el nombre de la persona que lo envía
  32.                mail.From = new MailAddress(email, "Meta", Encoding.UTF8);
  33.                //Aquí ponemos el asunto del correo
  34.                mail.Subject = "Prueba de Envío de Correo";
  35.                //Aquí ponemos el mensaje que incluirá el correo
  36.                mail.Body = "Prueba de Envío de Correo de Gmail desde C#...............";
  37.                //Especificamos a quien enviaremos el Email, no es necesario que sea Gmail, puede ser cualquier otro proveedor
  38.                mail.To.Add(email);
  39.                //Si queremos enviar archivos adjuntos tenemos que especificar la ruta en donde se encuentran
  40.                //mail.Attachments.Add(new Attachment(@"C:\Documentos\carta.docx"));
  41.  
  42.                //Configuracion del SMTP
  43.                SmtpServer.Port = 587; //Puerto que utiliza Gmail para sus servicios
  44.                //Especificamos las credenciales con las que enviaremos el mail
  45.                SmtpServer.Credentials = new System.Net.NetworkCredential(email, "password");
  46.                SmtpServer.EnableSsl = true;
  47.                SmtpServer.Send(mail);
  48.                Console.WriteLine("Mensaje enviado.");
  49.                Console.ReadKey();
  50.                return true;
  51.            }
  52.            catch (Exception ex)
  53.            {
  54.                Console.WriteLine("ERROR: Mensaje no enviado.");
  55.                Console.ReadKey();
  56.                return false;
  57.            }
  58.        }
  59.    }
  60. }
  61.  
150  Programación / .NET (C#, VB.NET, ASP) / Re: Enviar email con C# en: 12 Enero 2019, 16:05
Lo había hecho y lo volví hacer.

Código
  1. cliente.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

Sigue con lo mismo.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ... 229
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines