2010-07-13 35 views
8

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); 
+0

¿Hay algo en los registros de Exchange que muestre que rechaza la conexión? – David

+0

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

+0

¿Cómo se especifica el servidor? en el constructor del SmptClient, o en web.config? ¿Puedes publicar algún código? – onof

Respuesta

5

El "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" error normalmente significa que el puerto TCP que está intentar conectarse no tiene ningún servicio que lo escuche, es decir, está cerrado y no se pudo establecer una conexión de tcp, y mucho menos una conexión SMTP.

No se mostrará nada en los registros de intercambio ya que está fallando en un nivel inferior en la pila de la red y su servidor de correo ni siquiera verá el intento de conexión.

¿Se puede publicar el código .net1.1 también? El problema más probable es que el servidor esté escuchando en un puerto no estándar y no especifique ese puerto en el nuevo código. Tenga en cuenta que debe configurar el puerto utilizando la propiedad Port, no puede simplemente agregarlo a la propiedad Host, p.

incorrecto:

client.Host = "mail.someco.com:10000"; 

correcta:

client.Host = "mail.someco.com"; 
client.Port = 10000; 
0

Usted está seguro de la propiedad SmtpServer del System.Web.Mail.SmtpMail se establece en el código de edad? Fue posible usarlo sin establecer esta propiedad y luego usó el servicio SMTP del servidor local. System.Web.Mail.SmtpMail.SmtpServer

0

have u comprobar el archivo web.config para la configuración del servidor SMTP? Deberías copiar la sección de configuración a tu aplicación.

3

Si está utilizando algún software antivirus, compruebe su registro para ver si es por el antivirus. Me enfrenté al mismo problema cuando McAffee estaba bloqueando mis correos (hay una política de seguridad: evitar que los gusanos de correo masivo envíen correos). Edite esta política y agregue su aplicación a la lista de excepciones. En mi caso, esto solucionó el problema. Por favor, comprueba si funciona para ti.

Cuestiones relacionadas