Stavo cercando di inviare e-mail nella mia applicazione Asp.Net C# utilizzando la porta 465 con host "smtp.gmail.com" ma l'intera applicazione si blocca (continua a caricare). Quando il debug è bloccato su SmtpClient.Send (msg).SmtpClient si blocca senza eccezione generata se è stata specificata una porta errata
Indipendentemente dalle credenziali specificate, non genera eccezioni per la cattura o errori di timeout. Devo chiudere o aggiornare la pagina per riottenere l'accesso alla pagina.
Se inserisco la porta 587, allora ogni cosa funziona correttamente e SmtpClient.Send risponde e invia l'e-mail o restituisce un'eccezione appropriata come il timeout dell'operazione o l'invio non riuscito dell'email in base alle credenziali.
ho semplificato il codice qui sotto per la dimostrazione:
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 465,
EnableSsl = true,
Timeout = 200, // or any value it doesn't solve the problem
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential("[email protected]", "password")
};
var msg = new MailMessage("[email protected]", "[email protected]", "Any subject", "Any body");
smtp.Send(msg); // stuck here
smtp.Dispose(); // never reached
msg.Dispose();
ho provato SendAsync e ridotto l'intervallo di timeout, ma ciò non risolve il problema. Penso che il problema è che smtp.gmail.com è stato raggiunto ma non ha risposto correttamente alla porta 465 ed è per questo che il metodo è rimasto bloccato.
Ho bisogno di evitare tale comportamento poiché la mia applicazione consente impostazioni dinamiche dei dettagli del server smtp e non voglio che l'intera applicazione si blocchi in caso di dati errati inseriti.
Grazie,
Strano, non ho mai avuto un problema e sembra giusto. Sembra un po 'come questo problema http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/99d6812c-9efe-4d0c-94d0-493c688450f7/, ma non penso che abbia davvero avuto una soluzione lì . Puoi inviare in uscita sulla tua rete utilizzando qualsiasi altra applicazione? – devshorts
'using (var smtp = ...)' e 'using (var msg = ...)' –
@devshorts Ho catturato il traffico TCP usando solo Wireshark, è sufficiente? –