none
Enviar correo

    Pregunta

  •      

    Buenos días,

    Tengo un programa que estaba enviando correos sin problemas 

    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Host = Var.s_glb_servidor_correo;
            smtp.Credentials = new System.Net.NetworkCredential(Var.s_glb_user_correo, Var.s_glb_pass_correo);
            smtp.EnableSsl = false;

            try
            {
                smtp.Send(correo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

    Ahora me sale este mensaje:

    "No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión IP.......:25   "

    El administrador de la red de esa empresa me indica que han hecho un cambio, me indica que ya no debo poner esa ip, sino redireccionar a Outlook 365

    Qué debo poner en reemplazo de la ip?

    me pueden ayudar, gracias!!!

    viernes, 10 de agosto de 2018 13:46

Respuestas

  • Tienes que hacer varios cambios:

    El servidor es smtp-mail.outlook.com. Ponlo por nombre, no pongas la IP, porque la IP puede cambiar en cualquier momento. Deja puesto en el .Host el nombre, y deja que el servidor DNS lo resuelva.

    Cambia el puerto al 587 en lugar del 25.

    Y el EnableSSL tiene que ser True, Outlook.com no admite conexiones sin seguridad.

    Obviamente, también tienes que poner las credenciales (usuario y password) que correspondan a Outlook.com, seguramente ya no valdrán las credenciales que tenias para el servidor antiguo.

    viernes, 10 de agosto de 2018 14:24
    Moderador

Todas las respuestas

  • Tienes que hacer varios cambios:

    El servidor es smtp-mail.outlook.com. Ponlo por nombre, no pongas la IP, porque la IP puede cambiar en cualquier momento. Deja puesto en el .Host el nombre, y deja que el servidor DNS lo resuelva.

    Cambia el puerto al 587 en lugar del 25.

    Y el EnableSSL tiene que ser True, Outlook.com no admite conexiones sin seguridad.

    Obviamente, también tienes que poner las credenciales (usuario y password) que correspondan a Outlook.com, seguramente ya no valdrán las credenciales que tenias para el servidor antiguo.

    viernes, 10 de agosto de 2018 14:24
    Moderador
  • hola

    >>"No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión IP.......:25   "

    office 365 tiene servicio de SMTP, debs pedirle los datos, no se redireciona nada a outlook

    POP3 and IMAP4

    valida usando

    SMTP:   Smtp.office365.com   587  TLS

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 10 de agosto de 2018 14:44
  • Hola Alberto

    hice lo que me dijiste 

            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Port = 587;
            smtp.Host = "smtp-mail.outlook.com";
            smtp.Credentials = new System.Net.NetworkCredential(Var.s_glb_user_correo, Var.s_glb_pass_correo);
            smtp.EnableSsl = true;
            try
            {
                smtp.Send(correo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

    pero me sale este error:
    +  $exception {"El servidor SMTP requiere una conexión segura o el cliente
     no se autenticó. La respuesta del servidor fue: 5.7.57 SMTP;
    Client was not authenticated to send anonymous mail during MAIL
    FROM [SC1PR80CA0079.lamprd80.prod.outlook.com]"} System.Exception {System.Net.Mail.SmtpException}

    viernes, 10 de agosto de 2018 14:56
  • Hola Leandro

    hice la prueba

            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Port = 587;
            smtp.Host = "Smtp.office365.com";
            smtp.Credentials = new System.Net.NetworkCredential(Var.s_glb_user_correo, Var.s_glb_pass_correo);
            smtp.EnableSsl = true;
            try
            {
                smtp.Send(correo);
            }
            catch (Exception ex)
            {
                throw ex;
            }

    me sale este error:

    +  ex {"El servidor SMTP requiere una conexión segura o el cliente no se autenticó.
     La respuesta del servidor fue: 5.7.57 SMTP;
    Client was not authenticated to send anonymous mail during MAIL
    FROM [CP2PR80CA0094.lamprd80.prod.outlook.com]"} System.Exception {System.Net.Mail.SmtpException}

    viernes, 10 de agosto de 2018 15:03
  • Se queja de que la autenticación no es correcta. Yo añadiría smtp.UseDefaultCredentials=false por si acaso, aunque false es el valor predeterminado, y luego revisaría las credenciales que le estás pasando a ver si son correctas. Recuerda que no basta con seguir pasando las mismas credenciales que tenías en la versión anterior, las de outlook casi con toda seguridad serán diferentes.
    viernes, 10 de agosto de 2018 19:26
    Moderador
  • sale el mismo error. Si son las credenciales correctas porque cuando ingreso a la web https://mail.office365.com y me logueo ,ingreso sin problemas.
    viernes, 10 de agosto de 2018 20:23
  • Examina este artículo:

    https://www.codeproject.com/articles/700211/csharp-smtp-configuration-for-outlook-com-smtp-hos

    Verás que esencialmente usa los mismos parámetros que tú has puesto, pero advierte que dará un error (e indica cómo solucionarlo) en caso de que en outlook.com tengas activada la autenticación en dos pasos. Esto funciona cuando haces login desde el navegador, pero falla por código salvo que se cree una password de aplicación como indica el artículo.

    sábado, 11 de agosto de 2018 8:47
    Moderador
  • Hola

    cuando entro a la cuenta de correo no aparece esa opción "Additional security verification".

    Entonces no está activada esa opción de autenticación en dos pasos.

    El administrador de la red me paso esto para que le cambie en el host:

            smtp.Host = "midominio-com.mail.protection.outlook.com";

    pero igual no funciona.

    cómo me podría darme cuenta que mi servidor web si se puede conectar a ese servidor de correo por comando?

    hay forma?

    lunes, 13 de agosto de 2018 20:56
  • cómo me podría darme cuenta que mi servidor web si se puede conectar a ese servidor de correo por comando?

    hay forma?

    Puedes usar este comando desde una ventana de comandos en el servidor:

    TELNET midominio-com.mail.protection.outlook.com 25

    El 25 del final es el número del puerto al que te conectas.

    El comando TELNET venía "de fábrica" en los Windows antiguos. En los modernos, de forma predeterminada no viene instalado, pero lo puedes añadir desde "Agregar componentes de Windows".

    martes, 14 de agosto de 2018 8:14
    Moderador