我意识到这个问题已被问了一百次,但遗憾的是我仍然有同样的问题。所以我在这里将某人的Vb.Net解决方案转换为C#,但我得到了smtpClient.Send,我的应用程序挂起,直到它超时。我已经允许exe通过防火墙,所以这不是问题。任何有关我错过/出错的帮助都将不胜感激。这是我的代码
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add("a@b.com");
// From
MailAddress mailAddress = new MailAddress("x@y.com");
mailMsg.From = mailAddress;
// Subject and Body
mailMsg.Subject = "subject";
mailMsg.Body = "body";
SmtpClient smtpClient = new SmtpClient("smtp.virginmedia.com", 465);
System.Net.NetworkCredential credentials =
new System.Net.NetworkCredential("x@y.com", "MyPassword");
smtpClient.EnableSsl = true;
smtpClient.Credentials = credentials;
//smtpClient.
smtpClient.Send(mailMsg);
提前干杯 Robbo
答案 0 :(得分:1)
将以下内容添加到您的app.config中。 再次运行应用程序。现在,您将看到日志中确切的超时位置。如果在连接期间,您被防火墙或使用错误的端口阻止。但也许它会在另一个时间受到抨击?
<system.diagnostics>
<sources>
<source name="System.Net">
<listeners>
<add name="TraceFile"/>
<add name="TraceConsole"/>
</listeners>
</source>
<source name="System.Net.Sockets">
<listeners>
<add name="TraceFile"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
<add name="TraceConsole" type="System.Diagnostics.ConsoleTraceListener"/>
</sharedListeners>
<switches>
<add name="System.Net" value="Verbose"/>
<add name="System.Net.Sockets" value="Verbose"/>
</switches>
<trace autoflush="true"/>
</system.diagnostics>