【发布时间】: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,它是vbVisual Basic 控制台应用程序? -
我正在与其他开发人员交谈并使用与他们相同的设置,这就是让这变得如此混乱的原因。我正在尝试联系网络工作人员,但这里的进展有点慢。
标签: vb.net email windows-7 smtp