Select Case Mstate
       Case smtp_connect
          Mstate = smtp_hello
          Winsock1.SendData "EHLO " + Winsock1.LocalIP + vbCrLf
       Case smtp_hello
          Mstate = smtp_login
          Winsock1.SendData "AUTH  LOGIN" + vbCrLf
       Case smtp_login
          Mstate = smtp_user
          Winsock1.SendData B64E(Text2.Text) + vbCrLf
       Case smtp_user
          Mstate = smtp_pass
          Winsock1.SendData B64E(Text1.Text) + vbCrLf
       Case smtp_pass
          Mstate = smtp_from
          Winsock1.SendData "MAIL FROM:<" + Combo2.Text + ">" + Chr(13) + Chr(10)
          
       Case smtp_from
          Mstate = smtp_re
          Winsock1.SendData "RCPT TO:<" + Combo1.Text + ">" + vbscrlf       Case smtp_re
          Mstate = smtp_data
          Winsock1.SendData "DATA" + Chr(13) + Chr(10) '准备开始传送信件数据
          'MsgBox str
       Case smtp_data
          Mstate = smtp_subject
          Winsock1.SendData "Subject:" + Text3.Text + Chr(13) + Chr(10)
          Winsock1.SendData "Date:" + Format(Now, "dd mmm yy tttt") + vbCrLf
          Winsock1.SendData "Mail From:" + Combo2.Text + vbCrLf
          Winsock1.SendData "Rcpt to:" + Combo1.Text + vbCrLf
          Winsock1.SendData "X-Mailer:boat" + vbCrLf
          Winsock1.SendData Text4.Text + vbCrLf
          Winsock1.SendData vbCrLf & "." & vbCrLf
        Case smtp_subject
          Mstate = smtp_quit
          Winsock1.SendData "QUIT" & vbCrLf
        Case smtp_quit
End Select
以上我得主程序段
问题如下:
登陆smtp.21cn.com,反馈如下
235 OK Authenticated250 <[email protected]>, sender ok.354 Start mail input; end with <CRLF>.<CRLF>554 From field in mail header mismatches MAIL FROM command.
登陆smtp.163.com,反馈如下
235 Authentication successful250 Ok250 Ok354 End data with <CR><LF>.<CR><LF>Your message was blocked by NetEase AntiSpam+. 20oAALOTAz8zAUd6.1221 Bye
然而其它很多smtp服务器如elong.sina.等,我得程序都能顺利发送,为什么这2不行

解决方案 »

  1.   

    可能对smtp服务器作了特许的设置,你可以用outlook 发试试,smtp设为2的,看看可不可以发,如果能发就表示你的程序有问题,如果也不能可能就是2的服务器问题
      

  2.   

    我晕,OUtlook我试过都能发,你们做得Email能用163或21cn发么?
      

  3.   

    elong.sina.的SMTP服务需要身份认证,而21cn、163不需要
    改成


           Case smtp_login
              Mstate = smtp_user
              Winsock1.SendData B64E(Text2.Text) + vbCrLf
           Case smtp_user
    '          Mstate = smtp_pass
    '          Winsock1.SendData B64E(Text1.Text) + vbCrLf
    '       Case smtp_pass
              Mstate = smtp_from
              Winsock1.SendData "MAIL FROM:<" + Combo2.Text + ">" + Chr(13) + Chr(10)试试,是不是21cn、163行,elong.sina.不行了
      

  4.   

    在发送“EHLO ”时,如果服务返回命令不可识别,则为不支持身份验证,而163,21CN显然不是。特别提示:21CN不支持发件人不是它的用户的邮箱。