none
SmtpClient solo funciona con cuentas de Gmail o Hotmail? RRS feed

  • Pregunta

  • Estoy intentando crear una aplicación que envía automáticamente un correo, el problema esta, que al usar la clase "SmtpClient" con una cuenta de correo que viene desde un proveedor de dominios web (osea, @miempresa.com) no se envía el correo.

    Será que "SmtpClient", solo funciona con cuentas de Gmail, o a esta función le falta algo?

    Alguien me puede ayudar con esto?

                       

            public static void EnviarCorreo(Mail mail)
            {
                try
                {
                    var config = CAD.MailConfig.GetConfiguracion();
                    if (config != null)
                    {
                        MailMessage mm = new MailMessage(config.Email, mail.To);
                        mm.Subject = mail.Subject;
                        mm.Body = mail.Body;
                        if (mail.Adjuntos != null)
                        {
                            Adjuntos adjunto = mail.Adjuntos;
                            string path = adjunto.Ruta;
                            
                            if (System.IO.File.Exists(path))
                                mm.Attachments.Add(new Attachment(path));
                        }
                        mm.IsBodyHtml = true;

                        SmtpClient smtp = new SmtpClient();
                        smtp.Host = config.SMTPserver;
                        smtp.Port = config.Puerto;
                        smtp.EnableSsl = config.SSL;
                        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                        smtp.UseDefaultCredentials = true;

                        NetworkCredential nc = new NetworkCredential(config.Email, config.Contraseña);
                        smtp.Credentials = nc;
                        smtp.Timeout = 10000;

                        smtp.Send(mm);

                        
                        }
                    }
                }
                catch (Exception n)
                {
                }
            }



    jueves, 15 de agosto de 2019 5:12

Respuestas

  • hola

    >>Será que "SmtpClient", solo funciona con cuentas de Gmail, o a esta función le falta algo?

    no para nada, funciona con cualquier servicio de smtp pero debes configurarlo correctamente

    Si defines mal el puerto, si usa conexion segura, etc puede generar problemas

    por ejemplo defines

    smtp.UseDefaultCredentials = true;

    pero despues asignas

    smtp.Credentials = nc;

    entonces como queda? usa por defecto o usa las credenciales que proporcionas?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 15 de agosto de 2019 5:42
  • Creo que tu problema casi seguro debe estar aquí:

     smtp.UseDefaultCredentials = true;

    Eso hace que intente usar autenticación integrada de Windows, y desprecia las credenciales que le has puesto en Credentials. Normalmente solo funciona contra un servidor Exchange u otro que se integre con Windows dentro del mismo Dominio de Directorio Activo. Pero no funciona con un proveedor externo. Cámbialo a false.

    Aparte de eso también puede fallar si no concuerda cualquiera de los otros parámetros, por ejemplo, si le poner EnableSsl a True y el proveedor no soporta SSL, o si le pones el puerto equivocado (suele ser un puerto distinto según que uses SSL o no), etc.

    jueves, 15 de agosto de 2019 7:38

Todas las respuestas

  • hola

    >>Será que "SmtpClient", solo funciona con cuentas de Gmail, o a esta función le falta algo?

    no para nada, funciona con cualquier servicio de smtp pero debes configurarlo correctamente

    Si defines mal el puerto, si usa conexion segura, etc puede generar problemas

    por ejemplo defines

    smtp.UseDefaultCredentials = true;

    pero despues asignas

    smtp.Credentials = nc;

    entonces como queda? usa por defecto o usa las credenciales que proporcionas?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 15 de agosto de 2019 5:42
  • Creo que tu problema casi seguro debe estar aquí:

     smtp.UseDefaultCredentials = true;

    Eso hace que intente usar autenticación integrada de Windows, y desprecia las credenciales que le has puesto en Credentials. Normalmente solo funciona contra un servidor Exchange u otro que se integre con Windows dentro del mismo Dominio de Directorio Activo. Pero no funciona con un proveedor externo. Cámbialo a false.

    Aparte de eso también puede fallar si no concuerda cualquiera de los otros parámetros, por ejemplo, si le poner EnableSsl a True y el proveedor no soporta SSL, o si le pones el puerto equivocado (suele ser un puerto distinto según que uses SSL o no), etc.

    jueves, 15 de agosto de 2019 7:38