Estoy trabajando en un proyecto donde uno de los requisitos es volver a escribir una aplicación ASP.NET. La aplicación ASP.NET anterior se basaba en .NET Framework 1.1. La nueva aplicación ASP.NET se basa en .NET Framework 3.5.ASP.NET - SmtpClient - No se puede conectar al servidor remoto
Una de las funciones en la aplicación web antigua era la capacidad de enviar correos electrónicos. El código anterior usaba la clase System.Web.Mail.SmtpMail
, mientras que la nueva aplicación web usa la clase System.Net.Mail.SmtpClient
.
Al probar esto en nuestros servidores de desarrollo, todo funcionó bien. Sin embargo, tenemos dos clientes beta probando nuestro software, y ambos tienen problemas para enviar correos electrónicos en la nueva aplicación web.
La excepción específica es la siguiente:
No se puede conectar con el servidor remoto ---> System.Net.Sockets.SocketException: No se ha podido establecer conexión porque el equipo de destino ha denegado activamente dicha
Tanto la aplicación ASP.NET anterior como la nueva se encuentran en el mismo servidor (Windows Server 2003). Ambos usan el mismo servidor de correo Exchange. ¿Por qué la aplicación anterior de ASP.NET puede enviar correos electrónicos con éxito, pero la nueva no?
Miré el código anterior, y no utilizó ninguna forma de autenticación, solo especificó la dirección de correo electrónico del remitente, la dirección de correo electrónico del destinatario, el asunto, el cuerpo y el servidor, y envió el mensaje. Hice lo mismo en el nuevo código, con la única diferencia de que utilicé la clase SmtpClient.
A continuación se muestra un fragmento de código de la nueva aplicación ASP.NET:
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(messageTo);
mail.From = new MailAddress(messageFrom);
mail.Subject = messageSubject;
mail.Body = messageBody;
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mail);
¿Hay algo en los registros de Exchange que muestre que rechaza la conexión? – David
No tengo acceso a ellos y tampoco creo que el cliente beta pueda acceder a ellos. Nuevamente, esto funcionó bien de nuestra parte. Es una funcionalidad bastante básica. – Chris
¿Cómo se especifica el servidor? en el constructor del SmptClient, o en web.config? ¿Puedes publicar algún código? – onof