使用简单的.net应用程序发送邮件时出错服务器拒绝错误

时间:2010-04-15 19:25:12

标签: vb.net smtp email

我有一个非常简单的.net应用程序,用于在.net上测试SMTP。但我收到这个奇怪的错误。 “System.Net.Mail.SmtpException:发送邮件失败.---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标机器主动拒绝它“

SMTP服务器是远程的,不需要任何类型的身份验证,因此我不需要凭据。但我可以使用相同的smtp服务器和相同的smtp设置从这台计算机发送邮件没有任何问题。

有什么想法吗?非常感谢。

Imports System.Net.Mail 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim smtp As New SmtpClient
    smtp.Host = "10.241.128.220"
    smtp.Port = 25
    smtp.Send("nuri-fatih.guler@rzb.ro", "nuri-fatih.guler@rzb.ro", "test", "test")
End Sub

3 个答案:

答案 0 :(得分:3)

确保您发送电子邮件的计算机有权将此邮件服务器用作中继。这不是一个编程问题,而是一个服务器问题,所以在Serverfault可能会更好地回答。

不过,这是一个很好的起点:http://support.microsoft.com/kb/895853

编辑 - 已添加。

我在不同的网站上找到了以下列表。

这是导致此问题的4个最可能原因。

  1. IP上没有运行任何服务:您指定的端口。
  2. 路上有防火墙(在客户端或服务器上)
  3. 路上有一个病毒扫描程序(在客户端或服务器上)
  4. 您的邮件服务器不喜欢原始IP,因此它正在删除连接。
  5. 我上面的回答是针对第4点,因为大多数邮件服务器都允许您阻止传递功能并将其打开到特定的IP地址。

    因此,必须将SMTP服务器配置为允许您正在使用的计算机的IP地址将其用作传递SMTP服务器,这是您在使用System.Net.Mail命名空间时所执行的操作并指定本地主机以外的邮件服务器。

    通常,当我遇到问题#4时,我可以使用Outlook发送。在这种情况下,必须遵循以下规则:

    1. 邮件服务器必须使用Exchange
    2. Outlook正在使用MAPI(连接到Exchange服务器时的默认设置)进行连接。
    3. 在这种情况下,Exchange正常工作,因为IMAP没有被阻止,但是System.Net.Mail使用SMTP,而MAPI不会阻止SMTP。

答案 1 :(得分:1)

我发现了这个问题。这是因为McAfee Antivirus。它封锁了25个港口。我禁用了它,问题已经解决了。感谢大家。特别是大卫。

答案 2 :(得分:0)

  1. Outlook可能没有使用SMTP发送电子邮件
  2. 您确定Outlook未使用SSL进行连接吗?