none
Mail en ASP.NET RRS feed

  • Pregunta

  • Hola, buenas tardes

    Desarrollo ASP.NET  Lengaje VB.Net

    Estoy tratando de enviar mail desde una página .aspx Para ello utilizo el siguiente código

      Private Sub EnvioMensaje()
            Dim correo As New System.Net.Mail.MailMessage
            correo.From = New System.Net.Mail.MailAddress("pedroalopez.pedro@gmail.com")
            correo.To.Add("pedamberos@gmail.com")
            correo.Subject = "Asunto"
            correo.Body = "texto"
            correo.IsBodyHtml = True
            correo.Priority = System.Net.Mail.MailPriority.Normal
            Dim smtp As New System.Net.Mail.SmtpClient
            smtp.Host = "smtp.gmail.com"
            smtp.Credentials = New System.Net.NetworkCredential("Pedro", "xxxxxxxx")
            Try
                smtp.Send(correo)
                REM LabelError.Text = "Mensaje enviado satisfactoriamente"
            Catch ex As Exception
                REM LabelError.Text = "ERROR: " & ex.Message
            End Try
        End Sub

    Pero me da elsiguiente error

    {"El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.7.0 Must issue a STARTTLS command first. c191sm13797938qhc.12 - gsmtp"}  ¿Como lo arreglo? Gracias


    Pedro López

    martes, 16 de febrero de 2016 20:13

Respuestas

  • Hola,

    Hace una semana, el siguiente código me funcionó:

     public static void SendEmail(string To, string Subject, string Body)
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    
                mail.From = new MailAddress("emaildesdedondeenviar@gmail.com");
    
                mail.To.Add(To);
                mail.Subject = Subject;
                mail.Body = Body;
    
                SmtpClient smtp = new SmtpClient();
    
                smtp.Host = "smtp.gmail.com";
                smtp.Port = 25; //465; //587
                smtp.Credentials = new NetworkCredential("emaildesdedondeenviar@gmail.com", "clavedelemailenstringcrudo");
                smtp.EnableSsl = true;
                try
                {
                    smtp.Send(mail);
                }
                catch (Exception ex)
                {
                    throw new Exception("No se ha podido enviar el email", ex.InnerException);
                }
                finally
                {
                    smtp.Dispose();
                }
                
            }

    Cómo mencioné, tuve que habilitar la opción de dispositivos no seguros que tengan acceso a la cuenta.

    Espero que te sirva, saludos.

    • Marcado como respuesta Pearloga viernes, 19 de febrero de 2016 0:01
    jueves, 18 de febrero de 2016 23:23

Todas las respuestas

  • >>El servidor SMTP requiere una conexión segura o el cliente no se autenticó.

    intenta definir

    smtp.EnableSsl = true;


    SmtpClient.EnableSsl Property

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 16 de febrero de 2016 20:29
  • Lo que te está indicando es que el servidor smtp require de una conexión SSL.

    En este link tienes ejemplos de las dos formas en la que puedes implementarlo:

    Send Email using Gmail in VB.NET


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 16 de febrero de 2016 20:31
  • Sigue igual

    Pedro López

    martes, 16 de febrero de 2016 21:09
  • Parece que en ASP.NET no es igual

    Los Imports de ls ejemplos en VB no están


    Pedro López

    martes, 16 de febrero de 2016 21:12
  • Cierto, perdona.

    Lo que pasa es que el ejemplo utiliza una librería creada en otro post:

    Send Email in VB.NET - Tutorial

    Aquí tienes un ejemplo que utiliza TLS para enviar un mail a través del servidor smtp de Gmail utilizando exclusivamente las librerías de .NET:

    Sending .NET EMail Via smtp.gmail.com


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    martes, 16 de febrero de 2016 21:21
  • Gracias a ambos pro nada me funciona

    Pedro López

    martes, 16 de febrero de 2016 23:27
  • Hola,

    has probado a usar uno de estos puertos?

    SMTP 25, 587, 465 port

    tal y como se especifica en un enlace de Asier.



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 17 de febrero de 2016 7:36
    Moderador
  • Echa un vistazo a este post del foro. Está en C# pero para VB sería lo mismo

    https://social.msdn.microsoft.com/Forums/es-ES/fa40c039-2492-48f0-8e80-a8e583a0cf02/enviar-correo-electronico-gmail?forum=vcses


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 17 de febrero de 2016 8:07
    Moderador
  • Gracias a ambos pro nada me funciona

    Pedro López

    ¿Podrías ser más específico?

    ¿Cómo te ha quedado el código? ¿Qué error te da ahora? ¿El mismo?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    miércoles, 17 de febrero de 2016 8:29
  • Hola,buen dia

    El error actual es

    {"El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Authentication Required. Learn more at"}

    El codigo es

    Private Sub enviar()
            'Start by creating a mail message object
            Dim MyMailMessage As New MailMessage()

            'From requires an instance of the MailAddress type
            MyMailMessage.From = New MailAddress("pedroalopez.pedro@gmail.com")

            'To is a collection of MailAddress types
            MyMailMessage.To.Add("pedamberos@gmal.com")
            MyMailMessage.Subject = "GMail Test"
            MyMailMessage.Body = "This is the test text for Gmail email"

            'Create the SMTPClient object and specify the SMTP GMail server
            Dim SMTPServer As New SmtpClient("smtp.gmail.com")
            SMTPServer.Port = 587
            SMTPServer.Credentials = New System.Net.NetworkCredential("pedroaalopez.pedro", "'?????")
            SMTPServer.EnableSsl = True

            Try
                SMTPServer.Send(MyMailMessage)
                REM       MessageBox.Show("Email")
            Catch ex As SmtpException
                REM MessageBox.Show(ex.Message)
            End Try
        End Sub

    El  error parece estar en la autenticacion.

    El nombre de usuario en gmail es la parte de la dirección de mail hasta el @ ?

    Gracias


    Pedro López

    miércoles, 17 de febrero de 2016 9:52
  • Deberías agregar como usuario la dirección correo completa

    usuario@gmail.com


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 17 de febrero de 2016 10:01
    Moderador
  • Ya lo hice y da el mismo  error.

    Pregunto ¿la clave va como un simple texto?


    Pedro López

    miércoles, 17 de febrero de 2016 10:11
  • Tienes el firewall de windows activado? Prueba a desactivarlo momentáneamente para probar tu codigo

    Estás usando un proxy para salir a internet?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    miércoles, 17 de febrero de 2016 10:18
    Moderador
  • TENGO una urgencia, seguimos luego

    Pedro López

    miércoles, 17 de febrero de 2016 10:48
  • Perdon por la demora

    Recapitulando : 

    desarrollo ASP.Net  

    Lenguaje VB.Net    

    Intención enviar mails desde una página .aspx  

    Prueba con local Host

    Prueba con aplicación de escritorio

    NO Proxi

    No Firewall

    Sigue dando el mismo error 

    Se detectó System.Net.Mail.SmtpException
      HResult=-2146233088
      Message=El servidor SMTP requiere una conexión segura o el cliente no se autenticó. La respuesta del servidor fue: 5.5.1 Authentication Required. Learn more at
      Source=System
      StackTrace:
           en System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
           en System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode)
           en System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
           en System.Net.Mail.SmtpClient.Send(MailMessage message)
           en Pedambteca.SubirPDF.enviar() en D:\1 VS\1 Proyectos\Pedambteca\Pedambteca\SubirPDF.aspx.vb:línea 120
      InnerException:  

    GRACIAS


    Pedro López

    miércoles, 17 de febrero de 2016 18:51
  • Hola, proba con el puerto 25. Con éste lo pude hacer funcionar hace poco.

    También, ten en cuenta, que gmail tiene mucha seguridad. Por lo que tuve que habilitar una opción dentro de la cuenta de gmail (con la que intentas enviar los email). La opción era algo de utilizar la cuenta desde dispositivos no seguros.
    Link a google a dispositivos no seguros.

    Espero que te sirva. Saludos!

    miércoles, 17 de febrero de 2016 22:17
  • Está con pero 25.

    Respecto a la seguridad de Gmaiñ yo pensé lo mismo pero usé una cuenta sin seguridad adicional y sigue dado el mismo error.

    Gracias


    Pedro López

    jueves, 18 de febrero de 2016 0:31
  • Hola

    He cambiado a este código

            

    Private Shared Sub ver()
            Dim client = New SmtpClient("smtp.gmail.com", 587)
            client.Credentials = New NetworkCredential("pedroalopez.pedro@gmail.com", "3l3fant3$")
            client.EnableSsl = True
            client.Send("pedmberos@gmail.com", "myusername@gmail.com", "test", "testbody")

        End Sub

    pero sigue dando el mismo error

    He llegado a la conclución deque NO SE PUEDE ENVIAR MAIL CON GMATL DESDE ASP.NET

    Gracias a  todos


    Pedro López

    jueves, 18 de febrero de 2016 18:00
  • Hola,

    Hace una semana, el siguiente código me funcionó:

     public static void SendEmail(string To, string Subject, string Body)
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
    
                mail.From = new MailAddress("emaildesdedondeenviar@gmail.com");
    
                mail.To.Add(To);
                mail.Subject = Subject;
                mail.Body = Body;
    
                SmtpClient smtp = new SmtpClient();
    
                smtp.Host = "smtp.gmail.com";
                smtp.Port = 25; //465; //587
                smtp.Credentials = new NetworkCredential("emaildesdedondeenviar@gmail.com", "clavedelemailenstringcrudo");
                smtp.EnableSsl = true;
                try
                {
                    smtp.Send(mail);
                }
                catch (Exception ex)
                {
                    throw new Exception("No se ha podido enviar el email", ex.InnerException);
                }
                finally
                {
                    smtp.Dispose();
                }
                
            }

    Cómo mencioné, tuve que habilitar la opción de dispositivos no seguros que tengan acceso a la cuenta.

    Espero que te sirva, saludos.

    • Marcado como respuesta Pearloga viernes, 19 de febrero de 2016 0:01
    jueves, 18 de febrero de 2016 23:23
  • Ahora sí

    Gracuas


    Pedro López

    viernes, 19 de febrero de 2016 0:02
  • a mi me sale el mismo error, desde mi local envia correo al gmail y pero desde mi servidor no funciona me sale este error.

    El servidor SMTP requiere una conexión segura o el cliente no se ha autenticado. La respuesta del servidor fue: 5.5.1 Se requiere autenticación.

     var mail = new MailMessage();
                        mail.To.Add("axxxx@gmail.com");
                       
                        mail.From= new MailAddress("xxxx@gmail.com", "correo de  xxx");
    
                        mail.Subject = "Correo de la web de xxxx";
                        mail.IsBodyHtml = true;
    
                        var nombreapellidos = model.nombre_apellidos;                   
                        var email = model.email;
                        var telefono = model.telefono;
                        var institucion = model.institucion;
                        var consulta = model.consulta;
    
    
                        mail.Body = GetFormattedMessageHTML(nombreapellidos, email, telefono, institucion, consulta);
    
                        var SmtpServer = new SmtpClient("smtp.gmail.com");
    
    
                        SmtpServer.Port = 587;
                        SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    
                        SmtpServer.UseDefaultCredentials = true;
    
                        SmtpServer.Credentials = new System.Net.NetworkCredential("xxxx@gmail.com", "xxxxx");
    
                        SmtpServer.EnableSsl = true;
    
                        ServicePointManager.ServerCertificateValidationCallback =
    
                       delegate (object s
    
                           , X509Certificate certificate
    
                           , X509Chain chain
    
                           , SslPolicyErrors sslPolicyErrors)
    
                       { return true; };
    
    
                        SmtpServer.Send(mail);


    • Editado unseo jueves, 8 de junio de 2017 17:28 corregir letra
    jueves, 8 de junio de 2017 17:27
  • AMIGOS LA SOLUCION LA ENCONTRE EN YOUTUBE, EN UN VIDEO QUE SE LLAMA Envió de Email- Solución Error Servidor SMTP requiere una conexión segura ESPERO LES SIRVA
    domingo, 8 de noviembre de 2020 17:07