接上文,, 可是,,下面再向服务器发送 命令字 却没有反应 了
,,,,,,,,,,,,,
            我是 按照 如下 顺序发送的,,,先发 
                _T("MAIL FROM: <%s>\r\n")
                _T("RCPT TO: <%s>\r\n")
                _T("DATA\r\n")   
                邮件体
               "\r\n.\r\n"
             是不是还有其他的,,我没有想到的呢???

解决方案 »

  1.   

    void SendMail(LPCTSTR S)
    {
    CString sHelo;
    CString sAuthLogin;
    CString sFrom;
    CString sTo;
    CString sTemp;
    CString sEmail;
    CString m_strServer;
    m_strServer = "host";
    TCHAR local[80];
    ::gethostname(local,80);
    sSMTP.Create();
    if(sSMTP.Connect(m_strServer,80) && (get_response( CONNECT_SUCCESS )))
    {
    sHelo.Format( "EHLO %s\r\n", local );
    sSMTP.Send(sHelo, strlen(sHelo) );
    if( !get_response( GENERIC_SUCCESS ) )
    {
    sSMTP.Close();
    } //Send LOGIN
    //
    sAuthLogin= "AUTH LOGIN\r\n" ;
    sSMTP.Send(sAuthLogin, strlen(sAuthLogin) );
    if( !get_response( LOGIN_SUCCESS ) )
    {
    sSMTP.Close();
    } //Send USER
    //
    sAuthLogin= "c2RqbjE=\r\n" ;
    sSMTP.Send(sAuthLogin, strlen(sAuthLogin) );
    if( !get_response( LOGIN_SUCCESS ) )
    {
    sSMTP.Close();
    }
    //Send PASS 
    //
    sAuthLogin= "********\r\n" ;
    sSMTP.Send(sAuthLogin, strlen(sAuthLogin) );
    if( !get_response( CHECK_SUCCESS ) )
    {
    sSMTP.Close();
    } // Send the MAIL command
    //
    sFrom.Format( "MAIL From: <%s>\r\n", (LPCTSTR)("user@host") );
    sSMTP.Send((LPCTSTR)sFrom, sFrom.GetLength() );
    if( !get_response( GENERIC_SUCCESS ) )
    {
    sSMTP.Close();
    }

    // Send RCPT commands (one for each recipient)
    //
    sTo="RCPT TO:<user@host>\r\n";
    sSMTP.Send(sTo, strlen(sTo) );
    if( !get_response( GENERIC_SUCCESS ) )
    {
    sSMTP.Close();
    } // Send the DATA command
    sTemp = "DATA\r\n";
    sSMTP.Send(sTemp, strlen(sTemp));
    if( !get_response( DATA_SUCCESS ) )
    {
    sSMTP.Close();
    } // Send the header
    //
    sSMTP.Send( (LPCTSTR)strHeader, strlen(strHeader) ); //Empty line
    sTemp="\r\n";
    sSMTP.Send(sTemp, strlen(sTemp)); // Send the body
    //
    EncodeBody(S);
    sSMTP.Send( (LPCTSTR)S, strlen(S) ); // Signal end of data
    //
    sTemp = "\r\n.\r\n";
    sSMTP.Send(sTemp, strlen(sTemp) );
    if( !get_response( GENERIC_SUCCESS ) )
    {
    sSMTP.Close();
    } sSMTP.Close();
    }
    else
    {
    sSMTP.Close();
    }
    }
      

  2.   

    strFrom.Format(_T("MAIL FROM: <%s>\r\n"),(LPCTSTR)msg->m_strFrom);
        send(m_sockSMTP,(LPCTSTR)strFrom,strFrom.GetLength(),0); 
    recv(m_sockSMTP,buffer,250,0);    strTo.Format(_T("RCPT TO: <%s>\r\n"),(LPCTSTR)msg->m_strTo);
        send(m_sockSMTP,(LPCTSTR)strTo,strTo.GetLength(),0);
        recv(m_sockSMTP,buffer,250,0);
        
        我的是这样写的,,可是  strFrom.Format(_T("MAIL FROM: <%s>\r\n"),(LPCTSTR)msg->m_strFrom);  返回的是250 OK,可是,  strTo.Format(_T("RCPT TO: <%s>\r\n"),(LPCTSTR)msg->m_strTo);  没有返回这是怎么回事啊//???????????