【问题标题】:Can't Send Email using Visual Basic from Windows 7 pc: "The operation has timed out"无法从 Windows 7 电脑使用 Visual Basic 发送电子邮件:“操作已超时”
【发布时间】:2019-10-10 12:46:44
【问题描述】:

尝试使用 Visual Basic 控制台应用程序发送电子邮件时,我收到错误消息:“操作超时”。我从 Windows 7 电脑发送。这可以做到吗?

我发现很多帖子说它失败是因为Windows 7 上没有 SMTP 客户端。但是,我下载了 smpt4dev 并在尝试通过“localhost”连接时得到了相同的结果。

但是我可以从同一台电脑远程登录到服务器并且没有错误。我还可以使用这些 telnet 命令发送电子邮件:

telnet SMTP.domain.xyz 25
helo SMTP.domain.xyz
mail from: f@domain.com
rcpt to: t@domain.com
data
subject: test email
.
quit

我已经用几个不同的 smtp 服务器尝试过这个,我得到了相同的结果。我知道我的服务器名称、端口、用户名和密码是正确的。

Imports System.Net.Mail

Try
         Dim SMTPClientObj As New Net.Mail.SmtpClient
         SMTPClientObj.UseDefaultCredentials = False
         SMTPClientObj.Credentials = New System.Net.NetworkCredential(username, password)
         SMTPClientObj.Host = "mysmtpserver"
         SMTPClientObj.Port = 25
         SMTPClientObj.EnableSsl = False

         Dim e_mail As New MailMessage()
         e_mail.From = New MailAddress("test@test.com")
         e_mail.To.Add("test2@test.com")
         e_mail.Subject = "Email Sending Test"
         e_mail.IsBodyHtml = False
         e_mail.Body = "Test email from VB"

         SMTPClientObj.Send(e_mail)

         Dim x As New Mail.SmtpStatusCode
         Console.WriteLine("SmtpStatusCode: " & CStr(x))

         Console.WriteLine("Mail Sent.")

    Catch ex As Exception
         Dim x As New Mail.SmtpStatusCode
         Console.WriteLine("SmtpStatusCode: " & CStr(x))
         MsgBox(ex.Message)
         MsgBox(ex.ToString)
         MsgBox(ex.InnerException)
    End Try

此时,我希望能够获得有关错误的更多详细信息,而不是简单的超时消息。但我之前从未使用过 SmtpStatusCode,不知道如何使用它。

ex.InnerException 提示始终为空白。

你能给我一些关于如何获得更详细的错误信息的指示吗?或者我需要做什么才能让它在我的 Windows 7 电脑上运行?

谢谢

【问题讨论】:

  • 如果您在尝试使用 SMTPClient 时没有遇到异常,那么有一个可用的。在 Windows 7 上使用 SMTPClient 没有问题。您必须在可以连接的 SMTP 服务器上拥有一个实际帐户,并且超时表明您无法建立该连接。您的服务器无效,或者您的网络问题阻止您使用您正在使用的 IP 地址和端口访问它。您是否阅读过您的 SMTP 服务器帐户的文档以了解他们希望您如何进行设置?
  • 肯,感谢您的回复。我知道我的服务器和端口信息是正确的,因为其他开发人员已在非 Windows 7 机器上的 java 中成功使用它。如果我将端口更改为 587,我会立即收到“发送备忘录失败”的回复。我没有阅读 SMTP 服务器帐户的文档,因为这是一家大公司,我无权访问它。我应该寻找一些具体的东西吗?谢谢
  • 通常是端口和安全设置导致这些问题。如果您有其他开发人员成功发送电子邮件,您应该与他们讨论他们是如何设置的,不是吗?如果您连接的是您自己公司的 SMTP 服务器,您的 IT 人员也应该能够帮助您进行正确的配置,并且网络人员应该能够监控连接尝试以帮助找出问题所在。
  • 我认为这不是 vba,它是 vb Visual Basic 控制台应用程序?
  • 我正在与其他开发人员交谈并使用与他们相同的设置,这就是让这变得如此混乱的原因。我正在尝试联系网络工作人员,但这里的进展有点慢。

标签: vb.net email windows-7 smtp


【解决方案1】:

原来 Digital Guardian 阻塞了 25 端口。 McAfee 不是问题所在,组策略也不是问题。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多