Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2019
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Enviar email con C#

Hola:

Me da error al enviar mensaje por emmail desde C#.



El código por ahora es este.

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.Credentials = new System.Net.NetworkCredential(textBox_Emisor.Text, textBox_Contraseña.Text);
            cliente.Port = Int32.Parse(comboBox_Puerto.Text); ; // 587
            //cliente.Port = 25;
            cliente.Host = servidor; // smtp.gmail.com
            cliente.EnableSsl = true;

            //Añade credenciales si el servidor lo requiere.
            cliente.Credentials = CredentialCache.DefaultNetworkCredentials;
            cliente.Send(mensaje);
        }
    }
}
Error indicado aquí. Da igual sea con hotmail o gmail.



Me llegó un mensaje al gmail de seguridad por usar formulario C#.

Cita:
Se ha bloqueado un intento de inicio de sesión
metaconta@gmail.com

Alguien acaba de usar tu contraseña para intentar iniciar sesión en tu cuenta desde una aplicación que no es de Google. Aunque Google ha bloqueado el acceso, deberías averiguar qué ha pasado. Revisa la actividad de la cuenta y comprueba que solo tú tienes acceso a ella.

Pincho y eso sale.
Se ha bloqueado una aplicación poco segura
Hemos bloqueado la aplicación que intentabas usar porque no cumple nuestros estándares de seguridad.
Algunos dispositivos y aplicaciones utilizan una tecnología de inicio de sesión menos segura, lo que hace que tu cuenta sea más vulnerable. Te recomendamos que desactives el acceso de estas aplicaciones, aunque también puedes activarlo si quieres usarlas a pesar de los riesgos que conllevan.
Más información
Cita:
Permitir el acceso a cuentas desde aplicaciones menos seguras

Si una aplicación o un dispositivo no cumple con nuestros estándares de seguridad, Google bloqueará a cualquier persona que intente iniciar sesión desde esa aplicación o dispositivo. El bloqueo contribuye a mantener la seguridad de tu cuenta, ya que es muy fácil acceder a estas aplicaciones y dispositivos sin autorización.

A continuación, se muestran algunos ejemplos de aplicaciones que no son compatibles con la última versión de los estándares de seguridad:

La aplicación Mail para iPhone o iPad con la versión 6 o versiones anteriores
La aplicación Mail en un teléfono con una versión de Windows Phone anterior a la 8.1
Algunos clientes de correo electrónico para ordenadores, como Microsoft Outlook y Mozilla Thunderbird

Cambiar el acceso a la cuenta para aplicaciones menos seguras

Para mantener más protegidas tus cuentas de Google del trabajo, del centro educativo o de otro grupo, bloqueamos las aplicaciones menos seguras para que no puedan acceder a ellas. Si tienes una cuenta de este tipo, se te mostrará el error "Contraseña incorrecta" cuando intentes iniciar sesión. Si es así, tienes dos opciones:

Opción 1: instala una aplicación más segura que utilice medidas de seguridad más sólidas. Todos los productos de Google, como Gmail, utilizan las medidas de seguridad más recientes.
Opción 2: cambia la configuración para permitir que las aplicaciones poco seguras accedan a tu cuenta. Esta opción no es recomendable porque puede facilitar el acceso a tu cuenta a otra persona. Si, aún así, quieres utilizarla, sigue estos pasos:
Ve a tu cuenta de Google.
En el panel de navegación de la izquierda, haz clic en Seguridad.
En el panel Acceso de aplicaciones poco seguras de la parte inferior de la página, haz clic en Activar acceso.
Si no ves este ajuste, es posible que el administrador haya desactivado el acceso de las aplicaciones poco seguras a la cuenta.

Si sigues sin poder iniciar sesión en tu cuenta, obtén más información sobre el error "Contraseña incorrecta"
¿Alguna grandísima idea?

Hace años no pasaba estas cosas.

Saludos
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #2  
Antiguo 12-01-2019
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Parte del mensaje de Google es para meterte miedo y que uses sus programas y no los de la competencia, así que puedes ignorar la mayor parte del mismo.

Para poder acceder a un buzón de Gmail tienes que cambiar la configuración de dicho correo. Para ello, accede a la cuenta, dale a la "Configuración" en el engranaje (rueda dentada arriba a la derecha), después en "Reenvío y correo POP/IMAP" y dale una vuelta, en especial léete los documentos enlazados por "Configura el cliente de correo electrónico". Volverá a intentar meterte miedo, pero ignóralo. Si lo configuras correctamente no tiene por qué ser inseguro*. Configura el protocolo adecuado, normalmente no es necesario que configures ambos.

Una vez lo hayas hecho, vuelve a intentar conectarte con tu programa.
_________________________

* Fíjate que dice "Si una aplicación o un dispositivo no cumple con nuestros estándares de seguridad", el principal de los cuales es "no estas usando el programa que queremos nosotros". Los estándares ISO para el correo electrónico ya son suficentemente seguros (si están bien implementados) y no necesitan más.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 12-01-2019 a las 12:44:43.
Responder Con Cita
  #3  
Antiguo 12-01-2019
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Hola:

He llegado hasta aquí.


Me sigue apareciendo el mensaje de seguridad. Coom indica abajo, parece faltar algo.


En el código está esto:
Cita:
cliente.EnableSsl = true;
La dichoza activación del SSL. A lo mejor falta cosas de esas, no lo se.

Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #4  
Antiguo 13-01-2019
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 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
  #5  
Antiguo 16-01-2019
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¿Usas el mismo archivo fuente en ambos casos?
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar web por email fherwashere Internet 3 13-04-2011 05:03:02
Enviar email mrh_peru OOP 1 17-08-2010 02:55:48
Enviar email SMTZ PHP 1 01-07-2008 16:25:38
enviar email con bcc raulmm26 Internet 1 03-11-2005 11:38:55
Enviar Email satabel Internet 1 02-08-2005 02:12:56


La franja horaria es GMT +2. Ahora son las 23:05:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi