内部SMTP server,用System.Web.Mail.SmtpMail发送邮件,能正常收到,说明server没问题。但现用VB6.0的Winsock SendData,也不知道邮件发出去没有,反正在接收方的收件箱(包括垃圾箱),都没有找到邮件的影子。使用的控件有:Winsock控件,CommandButton控件,TextBox 控件这三个。目标是点击Button以后,向内部某邮箱发送文本邮件。TextBox是用来记录Winsock状态的。
编程如下: 
1.声明变量 
2.把如下代码加到Command1的Command1_Click事件: 
Private Sub Command1_Click() 
Winsock1.LocalPort = 0 '设置本地使用的端口 
Winsock1.Protocol = sckTCPProtocol '设置Winsock控件使用的协议,TCP或UDP。 
Winsock1.RemoteHost="gsmail.gitec.gitem.net" '设置发送Email的服务器,现使用公司内部邮件服务器
Winsock1.RemotePort = 25 '设置要连接的远程端口号 
Winsock1.Connect '返回与远程计算机的连接。 
End Sub 3.Winsock1的Connect事件: 
Private Sub Winsock1_Connect() ''当一个 Connect 操作完成时发生 
first = "mail from:" + Chr(32) + "[email protected]" + vbCrLf '发信人地址 
Second = "rcpt to:" + Chr(32) + "[email protected]" + vbCrLf '收信人地址 
DateNow = Format(Date, "Ddd") & ", " & Format(Date, "dd Mmm YYYY") & " " & Format(Time, "hh:mm:ss") & "" & " -0600" 
Third = "Date:" + Chr(32) + DateNow + vbCrLf '开始发信时间 
Fourth = "From:" + Chr(32) + "justinzhu" + vbCrLf '发信人姓名 
Fifth = "To:" + Chr(32) + "yingzizhu"+ vbCrLf '收信人姓名 
Sixth = "Subject:" + Chr(32) +"EmailTest" + vbCrLf '发信的主题 
Seventh = "EmailTestVB" + vbCrLf '发信的内容 
Ninth = "X-Mailer: anyMail v1.1" + vbCrLf 
Eighth = Fourth + Third + Ninth + Fifth + Sixth 
Winsock1.SendData ("HELO gsmail.gitesystems.com" + vbCrLf) '开始发送 
Winsock1.SendData (first) 
Winsock1.SendData (Second) 
Winsock1.SendData ("data" + vbCrLf) 
Winsock1.SendData (Eighth + vbCrLf) 
Winsock1.SendData (Seventh + vbCrLf) 
Winsock1.SendData ("." + vbCrLf) 
Winsock1.SendData ("quit" + vbCrLf) 
End Sub 4. Winsock1的DataAmival事件: 
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '接受数据时产生 
On Error Resume Next '在错误处理程序结束后,恢复原有的运行 
Dim webData As String 
Winsock1.GetData webData, vbString '取得发信后的反馈信息,可以检查是否错误 
Text1.Text = Text1.Text + webData 
End Sub 发送完成以后,电脑右下角状态栏有信封闪动,一秒钟后信封消失。但收件人的收件箱确实没有邮件,垃圾箱也没有。
以下是Text1内的文本
Text1220 gsmail.gitesystems.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.3959 ready at  Thu, 20 Mar 2008 09:25:20 +0800 
250 gsmail.gitesystems.com Hello [192.168.6.39]
250 2.1.0 [email protected] OK
250 2.1.5 [email protected]
354 Please start mail input.
250 Mail queued for delivery.
221 Closing connection. Good bye.
哪位高手帮忙分析一下?
我半路出家对VB很不熟,问题解决马上给分……
谢谢先

解决方案 »

  1.   

    运行结果:
    点击Button发送邮件。此时电脑右下角状态栏有信封闪动,一秒钟后信封消失。但收件人的收件箱确实没有邮件,垃圾箱也没有。 
    以下是Text1内的文本。
    Text1220 gsmail.gitesystems.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.3959 ready at  Thu, 20 Mar 2008 09:25:20 +0800  
    250 gsmail.gitesystems.com Hello [192.168.6.39] 
    250 2.1.0 [email protected] OK 
    250 2.1.5 [email protected] 
    354 Please start mail input. 
    250 Mail queued for delivery. 
    221 Closing connection. Good bye. 
      

  2.   

    在VB.NET内,可以正常发邮件。代码如下。我就是想不通为什么Winsock发不了。        Dim mmMail As New System.Web.Mail.MailMessage
            Dim objSmtpServer As System.Web.Mail.SmtpMail
            mmMail.From = "ABC"
            mmMail.To = "[email protected]"        mmMail.Subject = "just test"
            mmMail.BodyFormat = Mail.MailFormat.Html
            mmMail.Body = "邮件体"
            objSmtpServer.SmtpServer = "gsmail.gitec.gitem.net"
            objSmtpServer.Send(mmMail)
      

  3.   

    运行结果: 
    点击Button发送邮件。此时电脑右下角状态栏有信封闪动,一秒钟后信封消失。但收件人的收件箱确实没有邮件,垃圾箱也没有。  
    以下是Text1内的文本。 
    Text1220 gsmail.gitesystems.com Microsoft ESMTP MAIL Service, Version: 6.0.3790.3959 ready at  Thu, 20 Mar 2008 09:25:20 +0800   
    250 gsmail.gitesystems.com Hello [192.168.6.39]  
    250 2.1.0 [email protected] OK  
    250 2.1.5 [email protected]  
    354 Please start mail input.  
    250 Mail queued for delivery.  
    221 Closing connection. Good bye. 还忘了说,有一个Symantec Email Proxy 弹出警告框
    You email message was unable to be sent because your mail server rejected the message: 554 5.1.0 Sender Denied由于是内部SMTP server,所以是不需要用户名和密码验证,就可以向内部邮箱发信的。这个在VB.NET里验证过
      

  4.   

    一天了还没人来看,真可怜我又看了下,好像是点击“发送邮件”后,右下角任务栏有一个“Symantic Email Scanner”运行。再运行了一会儿就弹出警告说:“554 5.1.0 Sender Denied”。 但发送方邮箱是真实有效的,局域网内部也不需要用户名密码验证的呀。Winsock在文本框返回信息说“250 Mail queued for delivery. ”这是由于SMTP服务器上的杀毒软件“Symantic Antivirus”的问题么?谁有这方面经验,请指点一二……