2013-07-05 18 views
14

So che questa domanda sembra duplicata di dozzine di altre domande mentre non lo è.SMTPException: impossibile leggere i dati dalla connessione di trasporto: net_io_connectionclosed

Quando mai cerco di inviare una e-mail sulla mia macchina locale attraverso la mia applicazione web uno SmtpException viene gettata e le eccezioni è:

//on this line : SmtpServer.Send(mail); 
Unable to read data from the transport connection: net_io_connectionclosed. 

Mentre il codice sulla produzione è perfettamente funzionante, lo stesso codice, il stesse connessioni, stesse credenziali, sto usando IP invece di alias, ho provato a spegnere il firewall sul mio computer locale, e nulla mi ha aiutato a risolvere questo problema.

Mentre sul mio computer locale è utilizzato per lavorare in precedenza, qualcuno può dare solo un suggerimento quale potrebbe essere il problema che sollevando questo problema?

risposta

22

Se siete su una connessione internet residenziali, molto spesso il vostro ISP bloccare la posta in uscita manda bloccando tutte le connessioni in uscita sulla porta 25. Questo è abbastanza comune qui negli Stati Uniti.Prova a connetterti a un server e-mail locale su TCP/IP oa uno sulla tua rete interna.

+0

Questo è corretto, il mio ISP stava bloccando la connessione, non so perché lo hanno fatto di recente, ma come ho detto che stava funzionando in precedenza, grazie, – Hilmi

+2

alcuni lo fanno per tentare di limitare l'effetto del malware sulle macchine delle persone dall'invio di spam tramite la propria rete. –

+2

Ho Uverse AT & T e la porta interessante 587 che punta al server smtp di Gmail ha successo ma 465 fallisce con il messaggio indicato nella domanda precedente. – WiSeeker

6

This thread contiene alcuni.

Ad esempio: sembra che assigning a static IP possa risolvere il problema.

L'errore indica che System.net.mail non è riuscito a trovare il server smtp .

La risposta può variare a seconda che si disponga di un IP fisso o di un IP dinamico ma, in pratica, è necessario assegnare un IP valido al proprio server smtp .

Con IP fissi questo è relativamente semplice. Con IP dinamico ci vuole un po 'di tweaking.

Aprire Gestione IIS e controllare le proprietà per il server smtp.

Nelle proprietà del server virtuale SMTP predefinito, nella scheda "Accesso", nelle finestre di dialogo Controllo connessione e inoltro, assicurarsi che l'IP locale sia assegnato. (Nel mio caso, è 10.0.0.2 ...)

Potrebbe anche essere necessario modificare il file hosts, in modo che punti 127.0.0.1 a il nome della macchina. (\ WINDOWS \ system32 \ drivers \ etc \ hosts)

Poi, nel codice, assegnare il nome del computer per il client SMTP:

Dim client As New SmtpClient("yourmachinename") client.Send(mail) 

In alternativa un altro ragazzo nello stesso thread seems to have found a workaround per la La connessione SMTP non viene chiusa correttamente.

Impostare SmtpClient.ServicePoint.MaxIdleTime = 1 secondo un supportato work-around: http://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=146711 che rende tutto il lavoro smtp correttamente.

Ecco un esempio completo:

MailMessage msgMail = new MailMessage(); 
msgMail.To.Add(new MailAddress("[email protected]")); 
msgMail.Subject = "Message from web"; 
msgMail.IsBodyHtml = true; 
msgMail.Body = "Test message"; 
SmtpClient Client = new SmtpClient(); /* uses settings form web.config */ 
Client.ServicePoint.MaxIdleTime = 1; /* without this the connection is idle too long and not terminated, times out at the server and gives sequencing errors */ 
Client.Send(msgMail); 
msgMail.Dispose(); 
+1

Se si imposta 'Client.ServicePoint.MaxIdleTime', impostarlo su 2 invece di 1 per evitare problemi di CPU discusse qui: http: // StackOverflow. com/a/1190727/945875 – Justin

-4

L'account Gmail che stai utilizzando ha un limite per il numero di email inviate al giorno/mese e se superi tale limite, rifiuterà qualsiasi ulteriore e-mail in uscita.

+0

"Ogni volta che provo a inviare un'email" non sembra che l'OP sia un invio di massa ... –

0

System.Net.NetworkCredential (utente, password); /// Wrong
System.Net.NetworkCredential (email, password); /// destra

perché alcuni server di posta elettronica è shability

Problemi correlati