Cómo obtener error al enviar correo desde ASP.net Sitio web mientras trabaja a través de Windows Application

Mientras estoy tratando de enviar correo usando el cliente smtp estoy recibiendo la siguiente excepción.

Sin embargo Soy capaz de enviar correo utilizando la misma configuración a través de Windows Application.

System.Net.WebException: Incapaz de conectarse al servidor remoto --- System.Net.Sockets.SocketException: Se intentó acceder a un toma de una manera prohibida por sus permisos de acceso xxxx.xxxxx:25 en System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress senter code hereocketAddress)at System.Net.ServicePoint.ConnectSocketInternal(conecte booleanoFailure, Socket s4, Socket s6, Socket limitada socket, IPAddress curva, ConnectSocket Estado, IAsyncResult asyncResult, Excepción excepción)

Este es mi código

vacío estático público EnviarEmail(string strBody, string strSubject, string str To, string strCC, string strBcc, string filepath) {}

        try
        {
            AppCommon.AppConstant.WriteLogFile("sending mail to "+ strTo);
            AppSettingsReader g = new AppSettingsReader();
            string fromadd = "";
            fromadd = (string)g.GetValue("SMTPFromAddress", typeof(string));

            if (string.IsNullOrEmpty(fromadd))
                fromadd = "[email protected]";

            if (!string.IsNullOrEmpty(strTo))
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(fromadd);

                foreach (string toEmail in strTo.Split(','))
                {
                    if (!string.IsNullOrWhiteSpace(toEmail))
                        mail.To.Add(toEmail);
                }

                if (!string.IsNullOrEmpty(strCC))
                    mail.CC.Add(new MailAddress(strCC));
                if (!string.IsNullOrEmpty(strBcc))
                    mail.Bcc.Add(new MailAddress(strBcc));

                SmtpClient client = new SmtpClient();
                client.Host = (string)g.GetValue("SMTPHost", typeof(string));
                client.Port = Convert.ToInt32(g.GetValue("SMTPPort", typeof(Int32)));
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.EnableSsl = false;
                client.Credentials = new System.Net.NetworkCredential((string)g.GetValue("SMTPUserName", typeof(string)), (string)g.GetValue("SMTPPassword", typeof(string)));
                

                if (!string.IsNullOrEmpty(filepath))
                {
                    if (System.IO.File.Exists(filepath))
                    {
                        System.Net.Mail.Attachment attachment;
                        attachment = new System.Net.Mail.Attachment(filepath);
                        mail.Attachments.Add(attachment);
                    }
                }

                mail.Subject = strSubject;
                mail.Body = strBody;
                mail.IsBodyHtml = true;
                client.Send(mail);
                Console.WriteLine("Email sent.");

                if (mail.Attachments != null)
                {
                    for (Int32 i = mail.Attachments.Count - 1; i >= 0; i--)
                    {
                        mail.Attachments[i].Dispose();
                    }
                    mail.Attachments.Clear();
                    mail.Attachments.Dispose();
                }
                mail.Dispose();
                mail = null;
            }
        }
        catch(Exception ex){
            AppCommon.AppConstant.WriteLogFile(Convert.ToString(ex.InnerException));
        }
    }

Pregunta hecha hace 3 años, 4 meses, 13 días - Por pixelpioneerbbb5


2 Respuestas:

  • El error que estás experimentando al enviar correos desde ASP.net a través de un sitio web, pero que funciona correctamente desde una aplicación de Windows, parece estar relacionado con los permisos de acceso al servidor remoto.

    El error "System.Net.Sockets.SocketException: Se intentó acceder a un toma de una manera prohibida..." indica que existe un problema con los permisos de acceso al servidor SMTP que estás intentando conectarte. Este tipo de error se suele deber a restricciones de firewall, antivirus o configuraciones de red que impiden la conexión desde la aplicación web.

    Aquí te dejo algunas sugerencias para intentar solucionar este problema:

    • Verifica que el firewall o antivirus de tu servidor permita la conexión saliente por el puerto 25, que es el puerto por defecto para enviar correos mediante SMTP. Si es necesario, añade una excepción para tu aplicación web.
    • Comprueba la configuración de red de tu servidor web y asegúrate de que no haya restricciones que impidan la conexión al servidor SMTP.
    • Asegúrate de que el servidor SMTP al que estás intentando conectarte está configurado para aceptar conexiones desde tu servidor web. Puedes contactar al administrador del servidor SMTP para verificar la configuración.
    • Revisa las credenciales de autenticación proporcionadas en el código. Asegúrate de que el usuario y la contraseña son correctos y tienen los permisos necesarios para enviar correos.
    • Verifica que el servidor SMTP no requiera autenticación adicional o configuraciones especiales para permitir la conexión desde una aplicación web.

    Una vez que hayas revisado estas sugerencias, intenta ejecutar nuevamente tu código y observa si el problema se ha solucionado. Si el error persiste, asegúrate de revisar los registros del servidor SMTP para obtener más información sobre el motivo específico de la denegación de acceso.

    Espero que estas sugerencias te ayuden a resolver el problema con el envío de correos desde tu sitio web ASP.net. ¡Déjame saber si tienes alguna otra pregunta o si necesitas más ayuda con este tema!

    Respondida el Dec 18, 2020 a las 11:44 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error que estás experimentando, System.Net.WebException: No se puede conectar con el servidor remoto, generalmente es causado por problemas de conectividad de red o configuración incorrecta del cliente SMTP. Dado que puedes enviar correos electrónicos desde una aplicación de Windows que utiliza la misma configuración, es probable que el problema esté relacionado con tu sitio web ASP.NET.

    Aquí tienes algunos pasos para solucionar el problema:

    • Verifica la configuración de tu cliente SMTP: Asegúrate de que la dirección del host, el puerto, el nombre de usuario y la contraseña del cliente SMTP sean correctos. Compara la configuración con la que utilizas en la aplicación de Windows que funciona.
    • Comprueba la conectividad de red: Asegúrate de que tu sitio web ASP.NET tenga acceso a Internet y pueda conectarse al servidor SMTP. Puedes utilizar una herramienta como `telnet` para probar la conectividad al servidor SMTP.
    • Habilita TLS/SSL: La mayoría de los proveedores de correo electrónico ahora requieren conexiones seguras mediante TLS/SSL. Intenta habilitar TLS/SSL en la configuración del cliente SMTP de tu sitio web ASP.NET.
    • Permite puertos salientes: Asegúrate de que el servidor web que aloja tu sitio web ASP.NET tenga permitido el tráfico saliente en el puerto utilizado por el cliente SMTP (normalmente el puerto 25 o 587).
    • Comprueba el firewall: El firewall puede estar bloqueando la conexión al servidor SMTP. Intenta deshabilitar temporalmente el firewall y comprueba si puedes enviar correos electrónicos.
    • Verifica la configuración de seguridad: Algunos proveedores de correo electrónico tienen configuraciones de seguridad adicionales, como la autenticación de dos factores o las listas blancas de direcciones IP. Asegúrate de que tu sitio web ASP.NET cumpla con esos requisitos.
    • Utiliza un servicio de correo electrónico externo: Si no puedes resolver el problema con tu propio servidor SMTP, considera utilizar un servicio de correo electrónico externo como SendGrid o Mailgun. Estos servicios proporcionan una forma fiable y fácil de enviar correos electrónicos desde aplicaciones web.

    Si has seguido estos pasos y el problema persiste, proporciona más información sobre tu configuración y el mensaje de error completo. Estaré encantado de ayudarte más a fondo.

    Respondida el Dec 18, 2020 a las 11:59 - por Gemini

    Votos positivos: 0 | Votos negativos: 0