Ver Mensaje Individual
  #4  
Antiguo 13-01-2019
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Reputación: 21
REHome Va por buen camino
Si no te llegara a entender, choco con la pared. Es importante el enlace.
https://myaccount.google.com/lesssecureapps


Ahora si funciona con Windows Form.



Código:
using System;
using System.Windows.Forms;
using System.Net;       // No olvidar.
using System.Net.Mail;  // No olvidar.

namespace Enviar_e_mail_01_cs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button_Enviar_Click(object sender, EventArgs e)
        {
            // La cadena "servidor" es el servidor de correo que enviará tu mensaje.
            string servidor = comboBox_smtp.SelectedItem.ToString(); // smtp.gmail.com

            // Crea el mensaje estableciendo quién lo manda y quién lo recibe.
            MailMessage mensaje = new MailMessage(
               textBox_Emisor.Text,
               textBox_Receptor.Text,
               textBox_Asunto.Text,
               richTextBox_Mensaje.Text);

            // Envía el mensaje.
            SmtpClient cliente = new SmtpClient(servidor);
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.UseDefaultCredentials = false;
            cliente.EnableSsl = true;
            cliente.Credentials = new NetworkCredential(textBox_Emisor.Text, textBox_Contraseña.Text); // usuario@gmail.com, Contraseña.
            cliente.Port = Int32.Parse(comboBox_Puerto.Text); ; // 587
            cliente.Host = servidor; // smtp.gmail.com

            // Añade credenciales si el servidor lo requiere.
            //cliente.Credentials = CredentialCache.DefaultNetworkCredentials;
            cliente.Send(mensaje);
        }
    }
}
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:
using System;
using System.Net.Mail;
using System.Text;
using System.Net;

namespace Enviar_e_mail_Consola_03_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 = 100; // X. Ancho.
            Console.WindowHeight = 40; // Y. Alto.

            Console.WriteLine("\t\t----------------------------------------");
            Console.WriteLine("\t\t\tEnviar Correo Electrónico");
            Console.WriteLine("\t\t----------------------------------------");


            Console.WriteLine("\n");
            Console.Write("\t\tIngresa tu correo electrónico: ");
            usuario = Console.ReadLine();
            Console.Write("\t\tIngresa tu password: ");
            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");
            servidor.Port = 587;
            NetworkCredential credenciales = new NetworkCredential(usuario, contraseña);
            servidor.Credentials = credenciales;
            servidor.EnableSsl = true;

            try
            {
                Console.WriteLine("Enviando...");
                servidor.Send(correo);
                Console.WriteLine("\t\tCorreo enviado de manera exitosa.");
                correo.Dispose();
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine("\t\tNo se ha enviado nada.");
                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();

            do
            {
                cki = Console.ReadKey(true);
                if (cki.Key != ConsoleKey.Enter)
                {
                    sb.Append(cki.Key);
                    Console.Write("*");
                }

                else
                    break;

            } while (true);
            Console.WriteLine();
            return sb.ToString();
        }
    }
}
Por mucho que compare el de Windows Form, no lo pillo.

Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita