我也要,
还有如何做SMTP服务器的身份认证啊?

解决方案 »

  1.   

    我已经用它成功的发送了信件.
     Winsock1.Close
     Winsock1.Connect
     If Not WaitForResponse("220", 15) Then
        StatusBar1.Panels(1).Text = "邮件服务器连接不上......"
        Exit Sub
     End If
     StatusBar1.Panels(1).Text = "连接服务器" & frmMain.SMTPServerIp & "完毕"
     '打开对话
     Winsock1.SendData "HELO" & " " & Winsock1.LocalHostName & vbCrLf
     If Not WaitForResponse("250", 10) Then
        StatusBar1.Panels(1).Text = "无法打开邮件发送对话"
        Exit Sub
     End If
     '开始SMTP认证
     Winsock1.SendData "AUTH LOGIN" & " " & vbCrLf
     If Not WaitForResponse("334", 10) Then
       StatusBar1.Panels(1).Text = "无法进行认证"
       Exit Sub
     End If
     StatusBar1.Panels(1).Text = "进行SMTP认证"
     '传入认证所要用户名,Base64加密
     encodestr frmMain.username, tmpstr
    Winsock1.SendData tmpstr & vbCrLf
    If Not WaitForResponse("334", 10) Then
       StatusBar1.Panels(1).Text = "用户名无法进行认证"
       Exit Sub
    End If
    '传入密码
    tmpstr = ""
    encodestr frmMain.userid, tmpstr
    Winsock1.SendData tmpstr & vbCrLf
    If WaitForResponse("553", 10) Then
       StatusBar1.Panels(1).Text = "密码无法进行认证"
       Exit Sub
    End If
    StatusBar1.Panels(1).Text = "验证完毕"
    '发送发送方地址
    Winsock1.SendData "MAIL FROM:" & " " & txtFrom & vbCrLf
    If Not WaitForResponse("250", 10) Then
        StatusBar1.Panels(1).Text = "无法发送发送方地址"
        Exit Sub
    End If
    StatusBar1.Panels(1).Text = "发送发送方地址"
    '发送接收方地址
    Winsock1.SendData "RCPT TO:" & " " & txtTo & vbCrLf
    If Not WaitForResponse("250", 10) Then
        StatusBar1.Panels(1).Text = "无法发送接收方地址"
        Exit Sub
    End If
    StatusBar1.Panels(1).Text = "发送接收方地址"
    '发送消息体
    Winsock1.SendData "DATA" & vbCrLf
    If Not WaitForResponse("354", 10) Then
        StatusBar1.Panels(1).Text = "无法进行发送信件内容"
        Exit Sub
    End If
    StatusBar1.Panels(1).Text = "正在发送信件内容...."Dim fnum As Integer
    fnum = FreeFile()
    Open App.Path & "\mail.tmp" For Input As #fnum
    Winsock1.SendData mdata & vbCrLf
    While Not EOF(fnum)
        Line Input #fnum, strContent
        Winsock1.SendData strContent & vbCrLf
    Wend
    Close #fnum
    Winsock1.SendData "." & vbCrLf
    If Not WaitForResponse("250", 20) Then
        StatusBar1.Panels(1).Text = "信件内容发送不成功" & vbCrLf
        Exit Sub
    End If
    StatusBar1.Panels(1).Text = "发送完毕,退出"
    Winsock1.SendData "QUIT" & vbCrLf
    If Not WaitForResponse("221", 10) Then
        Exit Sub
    End If
     Winsock1.Close
      StatusBar1.Panels(1).Text = "发送信件完成 "
      

  2.   

    WaitForResponse 这个函数怎么没贴出来?
      

  3.   

    >>topsearch(挥情) 能不能把你的发信程序给我一份。
     [email protected]
      

  4.   

    >>topsearch(挥情) 请将发信程序给我来一份,谢谢先!
    [email protected]
      

  5.   

    你的发信程序可以看看吗??
    [email protected]
      

  6.   

    各位.我的程序现在不能发送附件.我觉得不完全.waitforresponse(),它只是完成等待邮件服务器返回值功能, 函数如下:
    Private Function WaitForResponse(strResponse As String, WaitTime As Integer) As Boolean
    Dim WaitSt As Date
    WaitSt = Now()
    While InStr(1, Information, strResponse, vbTextCompare) < 1
        DoEvents
        If DateDiff("s", WaitSt, Now) > WaitTime Then
           Information = ""
           WaitForResponse = False
           Exit Function
        End If
    Wend
    Information = ""
    WaitForResponse = True
    End Function
      

  7.   

    我作的EMAIL客户端也无法实现附件功能,如解决,别忘了指点兄弟一把。