2011-05-09 18 views
7

Estoy usando el servidor Gmail STMP para enviar correos electrónicos. Funciona bien. Pero a partir de algunos días, a veces deja de funcionar. Ahora, solo está trabajando 5 out of 10 veces.¿Hay alguna manera de cerrar la sesión smtp de correo?

Excepción: Failure Sending Email

excepción interna: Unable to connect to remote server.

Después de hablar con alojamiento de soporte técnico, que dijo que hay un límite de sesión de correo en su servidor. Este es un Shared Hosting, por lo que cuando se supera todas las conexiones nuevas están bloqueando. Dijeron que están tratando de arreglarlo. Pero también dijo que por favor verifique que usted es closing the mail session properly or not.

Lo miré, pero no hay Close() o Dispose(). También leí que no hay reconocimiento para SMTP tranfer?

Háganme saber si hay alguna forma de cerrar la sesión de correo? O cualquier solución para solucionar este problema.

actualización

estoy usando System.Net.Mail

MailMessage msg = new MailMessage();

SmtpClient sc = new SmtpClient ("smtp.gmail.com", 587);

NetworkCredential info = new NetworkCredential ("email", "password");

Luego hay otro método que llama al sc.Send().

+1

Por favor, publique su código actual. Deje en claro si está usando System.Net.Mail, System.Web.Mail o una solución diferente –

Respuesta

12

El System.Net.Mail.SmtpClient implementa IDisposable, por lo que le sugiero que lo use en lugar del código que esté utilizando actualmente. Use un bloque using para asegurarse de que se elimine correctamente.

Note en particular que el uso de System.Web.Mail está en desuso en favor de System.Net.Mail.

using (SmtpClient client = new SmtpClient("mail.google.com")) 
{ 

} 

EDITAR Usted ha anotado ahora que está utilizando System.Net.Mail. En ese caso, encontrará que el SMTPClient tiene tiene un método Dispose (ya que implementa IDisposable), que cerrará con gracia la conexión SMTP. Sin embargo, se considera una mejor práctica usar un bloque using, en lugar de llamar directamente al Dispose. Finalmente, tenga en cuenta lo siguiente de la documentación vinculada:

La clase SmtpClient no tiene el método Finalizar . Por lo tanto, una aplicación debe llamar al Eliminar para liberar explícitamente los recursos .

se repite el método dispose a través todas las conexiones establecidas con el servidor SMTP especificado en la propiedad Host y envía un mensaje QUIT seguido de gracia que termina la conexión TCP . El método Dispose también libera los recursos no administrados utilizados por el socket subyacente.

+0

Gracias. Aplicaré esto en todas las aplicaciones y veré si funciona o no. –

+2

ID no se puede agregar hasta la versión 4.0 – landoncz

Cuestiones relacionadas