winsock编写电子邮件发送程序.可是老发不出去.总是在            Winsock1.SendData "DATA" & vbCrLf 这里出错 下面是我的代码.
代码:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Enum SMTP_State
MAIL_CONNECT
MAIL_HELO
MAIL_from
MAIL_RCPTTO
MAIL_DATA
MAIL_DOT
MAIL_QUIT
MAIL_USER
MAIL_PASS
mail_login
End EnumPrivate m_State As SMTP_State
Private m_strEncodedFiles As StringPrivate Function Base64_Encode(strSource) As String     'base6加密算法
Const BASE64_TABLE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
Dim strTempLine As String
Dim j As Integer
For j = 1 To (Len(strSource) - Len(strSource) Mod 3) Step 3
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
+ Asc(Mid(strSource, j + 1, 1)) \ 16) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, ((Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 _
+ Asc(Mid(strSource, j + 2, 1)) \ 64) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 2, 1)) Mod 64) + 1, 1)
Next j
If Not (Len(strSource) Mod 3) = 0 Then
If (Len(strSource) Mod 3) = 2 Then
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
+ Asc(Mid(strSource, j + 1, 1)) \ 16 + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 + 1, 1)
strTempLine = strTempLine & "="
ElseIf (Len(strSource) Mod 3) = 1 Then
strTempLine = strTempLine + Mid(BASE64_TABLE, Asc(Mid(strSource, j, 1)) \ 4 + 1, 1)
strTempLine = strTempLine + Mid(BASE64_TABLE, (Asc(Mid(strSource, j, 1)) Mod 4) * 16 + 1, 1)
strTempLine = strTempLine & "=="
End If
End If
Base64_Encode = strTempLine
End FunctionPrivate Sub cmdExit_Click()
Unload Me
End SubPrivate Sub CmdSend_Click()
Winsock1.Close
Winsock1.LocalPort = 0
Winsock1.Connect txtserver.Text, 25
m_State = MAIL_CONNECT
StatusTxt = "试图与服务器连接"
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'=================================
Dim strServerResponse As String
Dim strResponseCode As String
Dim strDataToSend As StringWinsock1.GetData strServerResponse
strResponseCode = Left(strServerResponse, 3)
    If strResponseCode = "250" Or _
    strResponseCode = "220" Or _
    strResponseCode = "354" Or _
    strResponseCode = "334" Or _
    strResponseCode = "235" Then
    
        Select Case m_State
        Case MAIL_CONNECT
            m_State = MAIL_HELO
            Winsock1.SendData "HELO " & txtserver.Text & vbCrLf
            StatusTxt = "正在登录服务器"
        Case MAIL_HELO
            m_State = MAIL_USER
            Winsock1.SendData "AUTH LOGIN" & vbCrLf
            StatusTxt = "完成登录"
        Case MAIL_USER
            m_State = MAIL_PASS
            Winsock1.SendData (Base64_Encode(Trim(user.Text))) & vbCrLf
            StatusTxt = "正在验证用户名"
        Case MAIL_PASS
            m_State = mail_login
            Winsock1.SendData (Base64_Encode(txtpwa.Text)) & vbCrLf
            StatusTxt = "正在验证用户密码"
        Case mail_login
            m_State = MAIL_from
             Winsock1.SendData "MAIL   FROM:" & "<" & txtfrom.Text & ">" & vbCrLf
            StatusTxt = "正在验证发件人"
        Case MAIL_from
            m_State = MAIL_RCPTTO
            Winsock1.SendData "RCPT   TO: " & "<" & getaddress.Text & ">" & vbCrLf '收件人
            StatusTxt = "正在验证接收人"
        Case MAIL_RCPTTO
            m_State = MAIL_DATA
            Winsock1.SendData "DATA" & vbCrLf
            StatusTxt = "准备发送"
        Case MAIL_DATA
            m_State = MAIL_DOT
'                Winsock1.SendData ("Date:" + Chr(32) + Format(Date, "Ddd") & "," & Format(Date, "dd Mmm YYYY") & "" & Format(Time, "hh:mm:ss") & "" & "-0600" + vbCrLf)
            Winsock1.SendData "From:" & Trim(txtfrom.Text) & vbCrLf
            Sleep 2000
            Winsock1.SendData "To:" & Trim(getaddress.Text) & vbCrLf
            Sleep 2000
            Winsock1.SendData "Subject:" & Trim(subject.Text) & vbCrLf
            Sleep 2000
            Winsock1.SendData ("ni hao ma" + vbCrLf)
            Sleep 2000
            Winsock1.SendData "." & vbCrLf
            Sleep 2000
            StatusTxt = "正在获取邮件内容"
        Case MAIL_DOT
            m_State = MAIL_QUIT
            Winsock1.SendData "QUIT" & vbCrLf
            StatusTxt = "邮件成功发送"
        Case MAIL_QUIT
            Winsock1.Close
            StatusTxt = "待命之中..."
        End Select
    Else
        Text1.Text = Text1.Text + strServerResponse
        Winsock1.Close
    End IfEnd Sub帮忙看看是那里出错. 谢谢