我用CSocket写了一个邮件收发程序,依次执行了smtp协议的helo,auth login,mail from,rcpt to命令之后,每次到达data的时候就会报出错误,我也不知道怎么会事情。那位牛人能不能告诉我一下到底发生了什么事情。

解决方案 »

  1.   

    有时侯它会说是not ready for data,有时候又报socket error,完全调试不了,我快崩溃了。
      

  2.   

    多半是没有认证,目前的SMTP服务器多半使用的是ESMTP协议,需要认证
    下面是我发的一封邮件的全过程,S、C分别表示服务器端、客户端的响应:
    S:220 Coremail SMTP(Anti Spam) System (163com[20050206])C:EHLO VPRW5CA8AJIS:250-smtp8
    250-PIPELINING
    250-AUTH LOGIN PLAIN NTLM
    250-AUTH=LOGIN PLAIN NTLM
    250 8BITMIMEC:AUTH LOGINS:334 VXNlcm5hbWU6         //Username:C:c2FtcGxlS:334 UGFzc3dvcmQ6        //Password:C:c2FtcGxlS:235 Authentication successfulC:MAIL FROM: <[email protected]>S:250 OkC:RCPT TO: <[email protected]>S:250 OkC:DATAS:354 Send itC:Message-ID: <002101c52c6c$68dde5b0$c71ea8c0@VPRW5CA8AJI>
    From: "Mr.sample" <[email protected]>
    To: <[email protected]>
    Subject: sdfasdf
    Date: Sat, 19 Mar 2005 18:04:34 +0800
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_001C_01C52CAE.1B6A4C50"
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Mailer: Microsoft Outlook Express 6.00.2900.2180
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180This is a multi-part message in MIME format.------=_NextPart_000_001C_01C52CAE.1B6A4C50
    Content-Type: text/plain;
    charset="gb2312"
    Content-Transfer-Encoding: base64
    ------=_NextPart_000_001C_01C52CAE.1B6A4C50
    Content-Type: text/html;
    charset="gb2312"
    Content-Transfer-Encoding: base64PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwv
    L0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVu
    dD0idGV4dC9odG1sOyBjaGFyc2V0PWdiMjMxMiI+DQo8TUVUQSBjb250ZW50PSJNU0hUTUwgNi4w
    MC4yOTAwLjI2MDQiIG5hbWU9R0VORVJBVE9SPg0KPFNUWUxFPjwvU1RZTEU+DQo8L0hFQUQ+DQo8
    Qk9EWSBiZ0NvbG9yPSNmZmZmZmY+DQo8RElWPiZuYnNwOzwvRElWPjwvQk9EWT48L0hUTUw+DQo=------=_NextPart_000_001C_01C52CAE.1B6A4C50--C:
    .S:250 Ok: queued as FoCj64P7O0LaaikE.1C:QUITS:221 Bye