MailKit/MimeKit SMTP 连接错误

mil*_*011 3 vb.net smtp mailkit mimekit

MailKit在尝试使用和发送电子邮件时MimeKit,我收到以下错误:

无法从传输连接读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败。

我正在使用的 vb.net 代码:

Dim mail As New MimeMessage()
mail.From.Add(New MailboxAddress("John DOE", "john.doe@hotmail.com"))
mail.To.Add(New MailboxAddress("Mary JANE", "mary.jane@yahoo.com"))
mail.Subject = "Hello!"
Dim sText As New TextPart("plain")
sText.SetText("UTF-8", "How are you Jane?")
mail.Body = sText

Using smtp = New SmtpClient()
    smtp.LocalDomain = "XX.XXX.XX.XXX"
    smtp.Connect("server33.somewebhosting.com", 465, False)
    smtp.Authenticate("myusername@somewebhosting.com", "XXXXXXXXXXXXXX")
    smtp.Send(mail)
    smtp.Disconnect(True)
End Using
Run Code Online (Sandbox Code Playgroud)

超时错误发生在这一行:

smtp.Connect("server33.somewebhosting.com", 465, False)
Run Code Online (Sandbox Code Playgroud)

奇怪的是它在我的家用电脑上可以运行,但在工作中却不行。

您认为问题的原因是什么?

jst*_*ast 5

SMTP 端口 465 是 SSL 端口,因此第三个参数Connect()应该是True,不是False。换句话说,将代码更改为:

smtp.Connect("server33.somewebhosting.com", 465, True)
Run Code Online (Sandbox Code Playgroud)

如果进行更改后 SmtpClient 仍然无法连接,则意味着服务器无法访问。

要诊断问题:

  1. 请联系管理员确保主机名和端口正确
  2. 确保您不在阻止您连接的防火墙后面
  3. 确保 SMTP 服务器确实在线