ÕÒÂÛÎÄÍø > ¼ÆËã»úÂÛÎÄ > ¼ÆËã»úÍøÂç >

»ùÓÚBCB¿ª·¢¾ßÓÐÉí·ÝÈÏÖ¤¹¦ÄܵÄÓʼþ·¢ËͳÌÐò(1)

Õª  Òª  ±¾ÎĽéÉÜÁËÈçºÎÔöÇ¿BCBÖз¢Ë͵ç×ÓÓʼþµÄNMSMTP¿Ø¼þµÄ¹¦ÄÜ£¬ÊµÏÖ¾ßÓÐÉí·ÝÈÏÖ¤¹¦ÄܵÄÓʼþ·¢ËͳÌÐò¡£

¹Ø¼ü´Ê  ESMTP£¬MIME£¬Éí·ÝÈÏÖ¤

1 ÒýÑÔ
ΪÁ˸üÓÐЧµØÒÖÖÆÀ¬»øÓʼþµÄ·ºÀÄ£¬Ä¿Ç°¶àÊýÍøÕ¾µÄÓʼþÊÕ·¢ÏµÍ³¶¼Ê¹ÓÃÁËESMTP·þÎñµÄÉí·ÝÈÏÖ¤¹¦ÄÜ¡£¼´Óû§·¢ËÍÓʼþʱ£¬ÐèÒª¶ÔÓû§µÄÉí·Ý½øÐÐÑéÖ¤£¬Èç¹ûÕʺŻòÃÜÂë´íÎó£¬Óʼþ·þÎñÆ÷»á¾Ü¾ø·¢ËÍÓʼþ¡£Borland C++ Builder 6ÖÐÓзḻµÄ¿Ø¼þ¹©¿ª·¢ÕßʹÓã¬ÆäÖе±È»Ò²°üÀ¨Óʼþ·¢ËͿؼþNMSMTP£¬Õâ¸ö¿Ø¼þʹÓ÷½±ã£¬µ«ÊÇΩһµÄȱµãÊDz»Ö§³ÖÓʼþ·¢ËÍʱµÄÉí·ÝÈÏÖ¤¹¦ÄÜ¡£±ÊÕßͨ¹ý¶ÔÓʼþ·¢ËÍЭÒéµÄ·ÖÎö£¬ÔÚʹÓÿؼþµÄ»ù´¡ÉÏÉè¼ÆÁ˾ßÓÐÉí·ÝÈÏÖ¤¹¦ÄܵÄÓʼþ·¢ËͳÌÐò¡£
2 ESMTPЭÒé·ÖÎö
ΪÁËʵÏÖÉí·ÝÈÏÖ¤¹¦ÄÜ£¬Ä¿Ç°ESMTPЭÒéÖÐÔö¼ÓÁËÒ»²¿·ÖÄÚÈÝ£¬Õâ¾ÍÊÇÉí·ÝÈÏÖ¤¡£ÏÂÃæÎÒÃÇ¿´¿´Õâ¶ÎÈÏÖ¤¹ý³Ì£¬ÒÔ±ÊÕßÔÚÍøÒ×µÄÓÊÏäΪÀý£¨ÆäÖÐC±íʾ¿Í»§¶Ë£¬S±íʾÓʼþ·þÎñÆ÷£©£º
(1)C: AUTH LOGIN
(2)S: 334 dXNlcm5hbWU6
(3)C: d3lxX2puX3NkX2Nu
(4)S: 334 UGFzc3dvcmQ6
(5)C: ÃÜÂëÂÔÈ¥
(6)S: 235 Authentication successful
Ïêϸ˵Ã÷£º
(1)¿Í»§¶ËÏò·þÎñÆ÷·¢ËÍÈÏÖ¤Ö¸Áî¡£
(2)·þÎñÆ÷·µ»ØBase64±àÂë´®£¬334Òâζ³É¹¦¡£±àÂë×Ö·û´®½âÂëºóΪ"username:"£¬ËµÃ÷ÒªÇó¿Í»§¶Ë·¢ËÍÓû§Ãû¡£
(3)¿Í»§¶Ë·¢ËÍBase64±àÂëµÄÓû§Ãû´®£¬´Ë´¦Îª"wyq_jn_sd_cn"¡£
(4)·þÎñÆ÷·µ»ØBase64±àÂë´®£¬334Òâζ³É¹¦¡£±àÂë×Ö·û´®½âÂëºóΪ"password:"£¬ËµÃ÷ÒªÇó¿Í»§¶Ë·¢ËÍÓû§¿ÚÁî¡£
(5)¿Í»§¶Ë·¢ËÍBase64±àÂëµÄ¿ÚÁî´®£¬´Ë´¦ÂÔÈ¥¡£
(6)·þÎñÆ÷·µ»ØÆÕͨ×Ö·û´®£¬235Òâζ³É¹¦£¬±íʾÈÏÖ¤³É¹¦¿ÉÒÔ·¢ËÍÓʼþÁË¡£
3  MIME Base64±àÂë½âÊÍ
Ò»°ãµÄ¼ÆËã»ú±àÂëµÄÒ»¸ö×Ö½ÚÊÇ8bit£¬0¡ª¡ªFF¾ÍÊÇ256ÖÖ²»Í¬µÄ8bit×éºÏ¡£ÎÒÃÇÏÖÔÚÒª½éÉܵÄÕâÖÖBase64±àÂëÔòÊÇÿ¸ö×Ö½Ú6bit£¬¹²ÓÐ26=64ÖÖ×éºÏ¡£ÆäÖÐÿÖÖ×éºÏ¶ÔÓ¦Ò»¸ö×Ö·û£¬ÕâЩ×Ö·ûÊÇ¡°ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567 89+/¡£¡±Õâ¾ÍÒâζ×Åÿ3¸öÆÕͨ±àÂë¿ÉÒÔת»»³É4¸öBase64±àÂ룬ÄÇôÈç¹ûÐèҪת»»µÄÆÕͨ±àÂë²»ÊÇ3µÄÕûÊý±¶Ôõô°ì£¿Base64¹æ¶¨£¬Î»Êý²»×ãµÄ×Ö½ÚºóÃæ²¹0£¬È»ºó²î¼¸¸ö×Ö·û²¹¼¸¸ö¡®=¡¯ºÅ¡£
4 Éè¼ÆË¼Â·
ÎÒÃÇ¿ÉÒÔʹÓÃNMSMTP¿Ø¼þÓëÓʼþ·þÎñÆ÷Á¬½Ó¡£Í¨¹ýµ÷ÓÃConnect·½·¨£¬È»ºó¼àÌýOnConnectʼþ£»ÔÚOnConnectʼþÀïÎÒÃÇ¿ÉÒÔÔö¼ÓÉí·ÝÈÏÖ¤¹¦ÄÜ¡£ÕâÀïÊÇÖ÷ÒªÀûÓÃÁËNMSMTP´ÓPowersockÖм̳еÄһЩ»ù±¾ÍøÂçͨѶº¯Êý£¬°üÀ¨Read,DataAvailable,SendBufferµÈÀ´ÊµÏÖÉí·ÝÈÏÖ¤¹ý³Ì¡£Èç¹ûÉí·ÝÈÏÖ¤³É¹¦£¬¾Í¿ÉÒÔ¼ÌÐø½øÐÐÓʼþ·¢ËÍ£»·ñÔò£¬Ìáʾ´íÎóÐÅÏ¢£¬¶Ï¿ªÍøÂçÁ¬½Ó¡£
5  ³ÌÐòʵÏÖ
     ʹÓÃBCBÉè¼ÆÈçͼ1ËùʾµÄ´°Ìå¡£
 
ͼ1 ³ÌÐòÖ÷½çÃæ
5.1  ÔڵǼ°´Å¥µÄonClickʼþÖе÷ÓÃÁ¬½Óº¯Êý
void __fastcall TForm1::Logon1Click(TObject *Sender)
{
     AddLog("ÕýÔڵǼ"+Edit1->Text+"......");
     NMSMTP1->Host = Edit1->Text;              //Ö÷»úµØÖ·
     NMSMTP1->Port = 25;                      //Ö÷»ú¶Ë¿Ú£¬È±Ê¡Îª25
     NMSMTP1->UserID = Edit4->Text;            //Óû§Ãû
     NMSMTP1->Connect();                      //Á¬½ÓÖ÷»ú
}
5.2  ´¦ÀíOnConnectʼþ
void __fastcall TForm1::NMSMTP1Connect(TObject *Sender)
{
   AddLog("Á¬½Ó·þÎñÆ÷³É¹¦¡£");
   AnsiString Data="",rData="";
   bool b_ok;
   if(CheckBox1->Checked){
     Data="AUTH LOGIN ";            //µÇ¼ÇëÇóÃüÁî                       
     NMSMTP1->SendBuffer(Data.c_str(),Data.Length());  //ÃüÁî·¢³ö
     rData = WaitForReply(5);            //µÈ´ý½ÓÊÕ·µ»ØÊý¾Ý£¬5ÃëÄÚ±ØÐë·µ»Ø
     b_ok = false;
     if(rData.Length()>=3){
       //334Òâζ×Å·þÎñÆ÷ÒªÇóÊäÈëÓû§Ãû
       if(rData.TrimLeft().SubString(0,3)=="334"){
         AddLog("ÕýÔÚÑéÖ¤Éí·Ý......");
         b_ok =true;
       }
     }
     if(!b_ok){
       AddLog("µÇ¼ʧ°Ü£¬ÕýÔÚÍ˳ö......");
       NMSMTP1->Disconnect();
       return;
rData="";
     Data=encode(Edit4->Text)+" ";      //Óû§Ãûת»»ÎªBase64±àÂë¡£
     NMSMTP1->SendBuffer(Data.c_str(),Data.Length()); //·¢ËÍÓû§Ãû
     rData = WaitForReply(5);
     b_ok=false;
     if(rData.Length()>=3){
       // 334Òâζ×Å·þÎñÆ÷ÒªÇóÊäÈë¿ÚÁî
       if(rData.TrimLeft().SubString(0,3)=="334"){
         AddLog("ÕýÔÚÑéÖ¤¿ÚÁî......");
         b_ok =true;
       }
     }
     if(!b_ok){
       AddLog("µÇ¼ʧ°Ü£¬ÕýÔÚÍ˳ö......");
       NMSMTP1->Disconnect();
       return;
     }
     rData="";
     Data=encode(Edit5->Text)+" ";//¿ÚÁîת»»³ÉBase64±àÂë¡£
     NMSMTP1->SendBuffer(Data.c_str(),Data.Length());  //·¢ËÍ¿ÚÁî
     rData=WaitForReply(5);
     b_ok = false;
     if(rData.Length()>=3){
       if(rData.TrimLeft().SubString(0,3)=="235"){
         AddLog("µÇ¼³É¹¦......");
         b_ok =true;
       }
     }
     if(!b_ok){
       AddLog("µÇ¼ʧ°Ü£¬ÕýÔÚÍ˳ö......");
       NMSMTP1->Disconnect();
       return;
     }
  }
  SendMail->Enabled=true;            //ÔÊÐí·¢ËÍÓʼþ
  disconnect->Enabled=true;      //ÔÊÐí¶Ï¿ªÁ¬½Ó
  Logon1->Enabled=false;            //²»ÔÊÐíÔٴεǼ
}
5.3  MIME Base64±àÂëת»»
AnsiString TForm1::encode(AnsiString s)
{
    int m_len;              //×Ö·û´®³¤¶È
    int i;                  //Ñ­»·±äÁ¿
    int m_tmp;              //ÁÙʱ±äÁ¿
    AnsiString m_64code;    //´¢´æBase64±àÂëµÄ×Ö·û´®
    char* m_s;              //ÁÙʱ´æ´¢²ÎÊý×Ö·û´®
    //Base64×Ö·û±í
    char m_64[]=
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    m_len = s.Length();            //È¡µÃ×Ö·û´®³¤¶È
    m_s = s.c_str();                 
    m_64code="";                        //·µ»Ø´®ÖÿÕ
    //´¦Àí3µÄ±¶ÊýÒÔÄÚµÄ×Ö·û
    for(i=0;i<m_len-m_len%3;i+=3){
        m_tmp=m_s/4;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s%4*16 + m_s[i+1]/16;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s[i+1]%16*4 + m_s[i+2]/64;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s[i+2]%64;
        m_64code+=m_64[m_tmp];
    }
    //Èç¹û×Ö·û´®µÄ³¤¶È±»3³ýÓà2 ,²»×ãµÄλÊý²¹0£¬Î²²¿²¹¡°=
   if(m_len%3==2){
        m_tmp=m_s[m_len-2]/4;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s[m_len-2]%4*16+m_s[m_len-1]/16;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s[m_len-1]%16*4;
        m_64code+=m_64[m_tmp];
        m_64code+='=';
    }
    //Èç¹û×Ö·û´®µÄ³¤¶È±»3³ýÓà1 £¬²»×ãµÄλÊý²¹0£¬Î²²¿²¹Á½¸ö¡°=¡±
    if(m_len%3==1){
        m_tmp=m_s[m_len-1]/4;
        m_64code+=m_64[m_tmp];
        m_tmp=m_s[m_len-1]%4*16;
        m_64code+=m_64[m_tmp];
        m_64code+="==";
    }
    return m_64code;
}
6  ½áÊøÓï
±¾³ÌÐòÔÚWindows 2000»·¾³ÏÂʹÓÃBorland C++ Builder 6.0±àд¼°µ÷ÊԵ쬷ֱðʹÓÃÍøÒ׺ÍÐÂÀËÓÊÏä×öʵÑ飬¶¼¿ÉÒÔ˳ÀûÍê³ÉÉí·ÝÈÏÖ¤ÒÔ¼°Óʼþ·¢Ë͹¦ÄÜ¡£

¹²2Ò³: 1 [2] ÏÂÒ»Ò³


WLANÖÐ802.1xЭÒéµÄ°²È«ºÍÓ¦ÓÃÑо¿
dz̸×齨·ÇÏßÐÔ±à¼­ÍøÂçÏà¹Ø¼¼Êõ
¹¤É̹ÜÀí | ¹¤¿ÆÂÛÎÄ | ²ÆÎñ¹ÜÀí | ¹ÜÀíѧ | ¹«¹²¹ÜÀí | ²ÆÕþ˰ÊÕ | ֤ȯ½ðÈÚ | »á¼ÆÉó¼Æ | ¼ÆËã»ú | ·¨ÂÉÂÛÎÄ | ҽҩѧ | ººÓïÑÔÎÄѧ
Éç»áÂÛÎÄ | ¹¤¿ÆÂÛÎÄ | Àí¿ÆÂÛÎÄ | ÎÄ»¯ÂÛÎÄ | ÒÕÊõÂÛÎÄ | ÎÄѧÂÛÎÄ | ÕÜѧÂÛÎÄ | ÕþÖÎÂÛÎÄ | Ó¢ÓïÂÛÎÄ | д×÷Ö¸µ¼ | ¼ÆËã»úÓ¦ÓÃ
www.zlunwen.com ÕÒÂÛÎÄÍø ® °æÈ¨ËùÓÐ ÍøÕ¾µØÍ¼