válido validación transporte tiempo smtpexception servidor según remoto puede procedimiento posible operación nombre net_io_connectionclosed net mail forzado excedió espera escribir error enviar datos correo conexión conectar con certificado c# .net windows-vista ssis system.net.mail

c# - validación - se excedió el tiempo de espera de la operación smtp



"No se pueden leer datos de la conexión de transporte: net_io_connectionclosed."-Windows Vista Business y SMTP (11)

He descubierto que Vista Business OS no viene con IIS SMTP. Sospecho que esta es la pieza que falta del rompecabezas. ¿Alguien ha tenido suerte con este problema?

No se puede probar el envío de correo electrónico desde el código .NET en Windows Vista Business.

Estoy escribiendo un código que migraré a un paquete de SSIS una vez que esté probado. El código es enviar un mensaje de error por correo electrónico a una lista de destinatarios.

El código está debajo, sin embargo, estoy obteniendo una excepción cuando ejecuto el código.

Creé una clase simple para hacer el envío de correos ... el diseño podría ser mejor, estoy probando la funcionalidad antes de implementar una funcionalidad, métodos, etc. más robustos.

namespace LabDemos { class Program { static void Main(string[] args) { Mailer m = new Mailer(); m.test(); } } } namespace LabDemos { class MyMailer { List<string> _to = new List<string>(); List<string> _cc = new List<string>(); List<string> _bcc = new List<string>(); String _msgFrom = ""; String _msgSubject = ""; String _msgBody = ""; public void test(){ //create the mail message MailMessage mail = new MailMessage(); //set the addresses mail.From = new MailAddress("[email protected]"); //set the content mail.Subject = "This is an email"; mail.Body = "this is a sample body"; mail.IsBodyHtml = false; //send the message SmtpClient smtp = new SmtpClient(); smtp.Host = "emailservername"; smtp.Port = 25; smtp.UseDefaultCredentials = true; smtp.Send(mail); } }

Mensaje de excepción

Inner Exception {"Unable to read data from the transport connection: net_io_connectionclosed."} Stack Trace " at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine)/r/n at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)/r/n at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)/r/n at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port)/r/n at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port)/r/n at System.Net.Mail.SmtpClient.GetConnection()/r/n at System.Net.Mail.SmtpClient.Send(MailMessage message)" Outer Exception System.Net.Mail.SmtpException was unhandled Message="Failure sending mail." Source="System" StackTrace: at System.Net.Mail.SmtpClient.Send(MailMessage message) at LabDemos.Mailer.test() in C:/Users/username/Documents/Visual Studio 2008/Projects/LabDemos/LabDemos/Mailer.cs:line 40 at LabDemos.Program.Main(String[] args) in C:/Users/username/Documents/Visual Studio 2008/Projects/LabDemos/LabDemos/Program.cs:line 48 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) at System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel) at System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String[] activationCustomData) at System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext) at System.Activator.CreateInstance(ActivationContext activationContext) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: System.IO.IOException Message="Unable to read data from the transport connection: net_io_connectionclosed." Source="System" StackTrace: at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine) at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine) at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller) at System.Net.Mail.SmtpConnection.GetConnection(String host, Int32 port) at System.Net.Mail.SmtpTransport.GetConnection(String host, Int32 port) at System.Net.Mail.SmtpClient.GetConnection() at System.Net.Mail.SmtpClient.Send(MailMessage message) InnerException:


Si ha especificado una dirección IP en la configuración del Servicio SMTP, asegúrese de especificar la dirección IP de la máquina dentro de IIS7 y no poner localhost .

IIS7 hace que sea fácil seleccionar ''localhost'' pero eso llevará a este error si la IP, por ejemplo, es 10.0.0.1


¿Su código está incompleto? El método de eliminación de errores es correcto al identificarlo. Luego, si ese componente de verificación smtp está instalado o no, verifique el texto del enlace.


Vista y Windows 7 no tienen ningún servidor SMTP, esta instalación se ha eliminado desde Windows XP, por lo que necesita configurar su servidor SMTP explícitamente, hay varias herramientas disponibles en el mercado para eso, puede verificarlo. Además, una vez que configura el SMTP, recuerde verificar el nombre del servidor que usaría para enviar el correo electrónico.


Hay varias cosas que pueden causar este problema, y ​​estas son algunas de las cosas que he encontrado. Preguntas: Mencionas "Intercambio" - ¿Es este un servidor de intercambio? ¿El host requiere autenticación (quizás necesite agregar autenticación al cliente)? Lo que trataría de hacer primero es asignar el host a la dirección IP estática en lugar del nombre de host para ver si eso funciona primero. Si lo hace, es muy probable que sea un problema con la asignación de DNS.

Si está ejecutando su servidor de intercambio con Virtualización, debe configurar el SmtpClient para la IP del servidor virtual, no el nombre del servidor de alojamiento físico o IP. Haga clic con el botón derecho en Servidor virtual SMTP predeterminado, seleccione Propiedades, luego vaya a la pestaña Acceso, haga clic en Retransmisión y luego agregue la dirección IP de la computadora que envía la solicitud SMTP al servidor SMTP. (Sitio de ASP.net)

Si esto no funciona, es porque el servidor le impide enviar paquetes SMTP. Debe asegurarse de agregar el cuadro al que está enviando los mensajes SMTP al servidor SMTP. Esto se hace a través de la pestaña de autenticación de IIS.

También me gustaría señalar que debe deshacerse del cliente de correo o usar el cliente en una declaración de "uso". Esto asegurará que el mensaje "QUIT" se envíe al servidor y cierre con gracia la conexión.

using(SmtpClient smtp = new SmtpClient()) { smtp.Host = "emailservername"; smtp.Port = 25; smtp.UseDefaultCredentials = true; smtp.Send(mail) }


actualizar a .NET 4.0 y aplicar todas las actualizaciones de seguridad


Reinicie IIS. Sé que suena tonto, hacer un reinicio para todo. (y siento aumentar un hilo viejo). Pero a veces reiniciar IIS funciona magia. Me enfrenté exactamente al mismo problema y lo reinicié.

Pudo haber ocurrido porque temporalmente el nombre ''localhost'' no pudo ser resuelto. Estoy publicando aquí para que alguien que lo enfrenta ahora probablemente pruebe esta solución rápida antes de intentar investigar más a fondo. Espero eso ayude


Estoy enfrentando este problema las últimas 6 horas y soy nuevo en eso, así que estoy tratando de resolver este problema de la siguiente manera

1) Abrí el símbolo del sistema (por ejemplo, Ctrl + R escriba cmd e intro).
2) Y compruebe el ping del servidor SMTP y compruebe la respuesta.
3) Si recibe una respuesta, entonces está bien y para avanzar al siguiente paso 4, el otro nombre smtp es incorrecto.
4) Luego verifico por telnet smtp el puerto (por ejemplo, 25) está abierto o no.
5) Usando este cmd, verificamos la respuesta SMTP.
6) telnet "yoursmtpname" "portno" (ej. Telnet smtp.gmail.com 25)
7) Si telnet no funciona, instálelo o agréguelo desde el panel de control para agregar nuevas funciones.
8) Si está funcionando, entonces es el resultado del pase como.
9) 220 mx.google.com ESMTP.

Usando los pasos anteriores podemos descubrir que la conexión SMTP está lista o no para enviar correo.


Tuve el mismo problema ya que tenía múltiples IP en mi servidor (Servidores Virtuales) y mi host apuntaba a localhost mientras que mi Servidor Virtual SMTP estaba asignado a una IP en particular:

<smtp deliveryMethod="Network"> <network host="localhost" port="25" defaultCredentials="false"/> </smtp>

Hay 2 soluciones para esto:

  1. Cambie su código y configure el host para la IP particular que está siendo utilizada por el Servidor Virtual SMTP en lugar de localhost.
  2. Cambiar la dirección IP del servidor virtual SMTP a todos los no asignados

Para ver / cambiar la IP del servidor virtual SMTP: Haga clic con el botón derecho en Servidor virtual SMTP predeterminado, seleccione Propiedades, en la pestaña General cambie / vea la dirección IP.

Espero que esto salve el día de alguien con el mismo problema.


Desarrollé una aplicación de servicio de Windows en VB usando .NET Framework v4.5 y recientemente me encontré con este problema.

Primero, un poco de fondo: me encontré con el error del operador después de tratar de resolver el error "Servicio no disponible, cierre el canal de transmisión. La respuesta del servidor fue: Error: demasiados mensajes en una sesión" que se resolvió llamando al método Dispose en el objeto SmtpClient después de cada correo electrónico enviado. Solo para ser ultra seguro, también llamé Dispose en el objeto MailMessage.

De acuerdo, entonces ahora se resuelve el problema de "demasiados mensajes en una sesión", pero ahora ocasionalmente recibí el error "No se pudo leer la información de la conexión de transporte: net_io_connectionclosed". Increíble. Resultó que no había implementado mi clase de correo electrónico de manera consistente, en una instancia, se estaba desechando mientras que en la otra no.

Aquí hay un ejemplo de lo que resolvió ambos problemas para mí (está en VB pero entiendes la idea):

With New clsEmail(True) With .Message .To.Add("[email protected]") .Subject = msgSubject .Body = msgContents End With .Server.Send(.Message) .Server.Dispose() .Message.Dispose() End With

Mi clase de correo electrónico tiene, entre otras cosas, 2 propiedades: Mensaje (System.Net.Mail.MailMessage) y Servidor (System.Net.Mail.SmtpClient) que es lo que se elimina en este ejemplo.

No he tenido un solo problema después de cientos de correos electrónicos una vez cada instancia que envía correo electrónico en mi servicio se implementó de esta manera.