Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET SMTP.send不工作但没有错误_.net_Email_Smtp_Send - Fatal编程技术网

.NET SMTP.send不工作但没有错误

.NET SMTP.send不工作但没有错误,.net,email,smtp,send,.net,Email,Smtp,Send,我有一个功能齐全的VB.NET解决方案,它使用的是一个简单的标准代码,我在网上的许多网站上都能找到,类似这样的代码: Dim oMessage As New MailMessage oMessage.From = New MailAddress("someone@abc.com") oMessage.To.Add("someone_else@abc.com") oMessage.Subject = "test mail" oMessage.Body = "

我有一个功能齐全的VB.NET解决方案,它使用的是一个简单的标准代码,我在网上的许多网站上都能找到,类似这样的代码:

    Dim oMessage As New MailMessage
    oMessage.From = New MailAddress("someone@abc.com")
    oMessage.To.Add("someone_else@abc.com")
    oMessage.Subject = "test mail"
    oMessage.Body = "test mail body"
    oMessage.IsBodyHtml = False
    Dim oSMTP As New SmtpClient("192.168.1.253")
    oSMTP.Port = 25
    oSMTP.EnableSsl = False
    oSMTP.Credentials = New System.Net.NetworkCredential("someone@abc.com", "password")
    oSMTP.Send(oMessage)
有效的解决方案依赖于gmail smtp服务器的常规配置。 我尝试在另一个环境中复制相同的解决方案,其中smtp服务器位于公司LAN(192.168.1.253)中,并且使用端口25,不需要SSL。 事实: 1) 我试图在其上部署解决方案的服务器正在运行第三方软件,该软件从专用地址发送电子邮件(我需要使用相同的电子邮件地址)。此功能处于活动状态且正常工作; 2) 我尝试通过telnet连接到SMPT服务器,并通过SMPT协议成功地将电子邮件发送到我的私人电子邮件地址。这是意料之中的,因为其他软件在做同样的工作时没有遇到任何问题; 3) 我用try-catch块测试了我的解决方案,以获得任何错误,但没有电子邮件到达目的地,即使我的代码终止时没有错误

我尝试了很多不同的smtp和邮件选项(还有其他目的地地址),但结果总是一样的:不发送邮件。我的最后一次机会是查找与服务器配置或防病毒软件的任何冲突。但我无法理解为什么通过SMPT协议与服务器进行“普通”对话是成功的,而我非常简单的代码却不是

最后注意:我提到的邮件服务器应该是MicrosoftExchange服务器


问题出在哪里?任何帮助都将不胜感激。

我建议您使用wireshark监控应用程序和邮件服务器之间的通信;我知道我曾经遇到过类似的问题,我能够看到服务器在收到消息后响应的错误消息(由于某种原因,错误消息没有一直传到应用程序)

也要这样做:

                oMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
因此,如果服务器无法发送您的消息,您将收到通知


此外,如果您使用SendAsync方法发送邮件,并将自己绑定到(smtp对象的)SendCompleted事件,您应该能够看到事件将提供给您的AsyncCompletedEventArgs对象中的任何错误。

该解决方案可能是我在上百次测试中忘记的唯一组合。。。我一添加行oSMTP.dispose,解决方案就开始工作了。这个建议可以在其他几个线程中找到,我可能错过了它,或者我尝试了错误的配置,因此,在代码结束之前报告了一个错误。只是强调一下实际的解决方案:在使用SMTPClient对象之后始终使用DISPOSE方法,以确保与服务器的连接正确关闭。谢谢。这是我的选择之一,但我不知道使用什么应用程序来监视与服务器之间的通信。也许这会帮助我找到解决办法。