C# 发送SMTP电子邮件(是的,我知道)

C# 发送SMTP电子邮件(是的,我知道),c#,smtp,C#,Smtp,我意识到这个问题已经被问了一百次了,但遗憾的是我仍然有同样的问题。因此,我已经在这里将某人的Vb.Net解决方案转换为C#,但我的应用程序一直挂起直到超时。我允许exe通过防火墙,所以这不是问题所在。对于我错过/出错的任何帮助,我们将不胜感激。这是我的密码 MailMessage mailMsg = new MailMessage(); mailMsg.To.Add("a@b.com"); // From MailAddress m

我意识到这个问题已经被问了一百次了,但遗憾的是我仍然有同样的问题。因此,我已经在这里将某人的Vb.Net解决方案转换为C#,但我的应用程序一直挂起直到超时。我允许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

将以下内容添加到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>


为响应干杯。尝试添加该选项,但超时。但是没有从中得到更多的信息。内部异常为空。日志中应该有很多关于超时发生时正在执行的操作的信息。啊,我是个白痴,在错误的位置查找日志文件。明白了,干杯