C# SMTP

Iniciado por andrecid, 6 Agosto 2014, 18:46 PM

0 Miembros y 1 Visitante están viendo este tema.

andrecid

Hola tengo un error cuando quiero usar smtp para enviar datos ami gmail el error es el siguiente :


cuando le doy a enviar me aparece:
Información adicional: 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

Por favor me pueden ayudar?

Eleкtro

#1
Buenas

Lo primero de nada que debo decir es que este tipo de preguntas debes hacerla en la sección de programación .NET, no en programación general.

El mensaje de error es 'self-explanatory' (se explica por si solo), te está indicando que el servidor requiere autentificación SSL así que debes activarlo, o también es posible que hayas escrito mal algún otro parámetro como las credenciales.

si no muestras tu código es imposible ayudarte en la corrección del mismo.

de todas formas te muestro un ejemplo por si estás haciendo algo mal:

Citar
Código (vbnet) [Seleccionar]
   ' GMail Sender
   ' By Elektro
   '
   ' Usage Examples :
   ' GMailSender("Username@Gmail.com", "Password", "Email Subject", "Message Body", "Receiver@Address.com")
   '
   ''' <summary>
   ''' Sends an e-mail through GMail service.
   ''' </summary>
   ''' <param name="Username">Indicates the GMail account username.</param>
   ''' <param name="Password">Indicates the GMail account password.</param>
   ''' <param name="Subject">Indicates e-mail subject.</param>
   ''' <param name="Body">Indicates e-mail body.</param>
   ''' <param name="Addresses">Indicates the address(es) to send.</param>
   Private Sub GMailSender(ByVal Username As String,
                           ByVal Password As String,
                           ByVal Subject As String,
                           ByVal Body As String,
                           ByVal Addresses As String)

           Using MailSetup As New System.Net.Mail.MailMessage
             
               MailSetup.Subject = Subject
               MailSetup.To.Add(Addresses)
               MailSetup.From = New System.Net.Mail.MailAddress(Username)
               MailSetup.Body = Body

               Using SMTP As New System.Net.Mail.SmtpClient("smtp.gmail.com")
                   SMTP.Port = 587
                   SMTP.EnableSsl = True
                   SMTP.Credentials = New Net.NetworkCredential(Username, Password)
                   SMTP.Send(MailSetup)
               End Using ' SMTP

           End Using ' MailSetup

   End Sub

Traducción al vuelo a C#:

Código (csharp) [Seleccionar]

// GMail Sender
// By Elektro
//
// Usage Examples :
// GMailSender("Username@Gmail.com", "Password", "Email Subject", "Message Body", "Receiver@Address.com")
//
/// <summary>
/// Sends an e-mail through GMail service.
/// </summary>
/// <param name="Username">Indicates the GMail account username.</param>
/// <param name="Password">Indicates the GMail account password.</param>
/// <param name="Subject">Indicates e-mail subject.</param>
/// <param name="Body">Indicates e-mail body.</param>
/// <param name="Addresses">Indicates the address(es) to send.</param>

private void GMailSender(string Username, string Password, string Subject, string Body, string Addresses)
{
using (System.Net.Mail.MailMessage MailSetup = new System.Net.Mail.MailMessage()) {

MailSetup.Subject = Subject;
MailSetup.To.Add(Addresses);
MailSetup.From = new System.Net.Mail.MailAddress(Username);
MailSetup.Body = Body;

using (System.Net.Mail.SmtpClient SMTP = new System.Net.Mail.SmtpClient("smtp.gmail.com")) {
SMTP.Port = 587;
SMTP.EnableSsl = true;
SMTP.Credentials = new Net.NetworkCredential(Username, Password);
SMTP.Send(MailSetup);
}
// SMTP

}
// MailSetup

}

//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================


saludos








MaliaHdez

Saludo, yo habia estado usando esa aplicacion de enviar correo, pero de un tiempo para aca no funciona, incluso estoy probando este ejemplo y me da el mismo error
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


Eleкtro

Cita de: MaliaHdez en  8 Junio 2016, 18:32 PMde un tiempo para aca no funciona
El servidor SMTP requiere una conexión segura o el cliente no se autenticó.
La respuesta del servidor fue: 5.5.1 Authentication Required.

No hay ningún error en el código, sin embargo, hace ya bastante tiempo Google realizó unos cambios, y desde entonces para poder enviar correos electrónicos mediante SMTP primero debes habilitar una opción en la configuración de tu cuenta de GMail para permitir este tipo de aplicaciones. aquí:


Saludos








tadeojones

#4
yo acabo de activar lo que comentas pero sigue sin enviarlo
Código (csharp) [Seleccionar]

                     
                       string admin="correode@gmail.com";
                       string passadmin="passdecorreode";

                       MailMessage _Correo = new MailMessage();
                       _Correo.From = new MailAddress(admin);
                       _Correo.To.Add(CorreotextBox.Text);
                       _Correo.Subject = "Bienvenido a la aplicacion de Pepe";
                       _Correo.Body="Le informamos :\n\n usuario : "+usuario+"\n contraseña : "+passw;
                       _Correo.IsBodyHtml = true;
                       _Correo.Priority = MailPriority.Normal;

                       SmtpClient smtp = new SmtpClient();
                       smtp.Credentials = new NetworkCredential(admin,passadmin);
                       smtp.Host = "smtp.gmail.com";
                       smtp.Port = 465;// 465; //587
                       smtp.EnableSsl = false;

                       try
                       {
                           smtp.Send(_Correo);
                           MessageBox.Show("Se ha enviado un correo a su cuenta de correo", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);

                       }
                       catch (Exception ex)
                       {
                           MessageBox.Show("error " + ex);
                           MessageBox.Show("No se ha podido enviar correo", "Informacion", MessageBoxButtons.OK, MessageBoxIcon.Information);

                       }
                       finally
                       {
                           _Correo.Dispose();
                       }


y el pedazo de error :



P:D: Solucionado con el codigo de Elektro

Eleкtro

#5
¿Por qué motivo has modificado el puerto y has desactivado la propiedad EnableSSL?.

Como indica la documentación de Google (https://support.google.com/a/answer/176600?hl=es) el puerto 465 requiere un método de conexión mediante SSL, sin embargo, como indica la documentación de Microsoft respecto a la class Smptclient (https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.enablessl%28v=vs.110%29.aspx), dicho método de conexión no está soportado.

Solución:
Utiliza el puerto 587 (TLS) y activa la propiedad EnableSSL. Exactamente como en el ejemplo que proporcioné, así te debería funcionar; de lo contrario, especifica que error tienes despues de haber aplicado las correcciones que acabo de mencionar.

Saludos!