利用Socket 編寫SMTP 發送郵件程式

來源:互聯網
上載者:User

 print?

  1. #include <winsock.h>   
  2. #include <stdio.h>   
  3. #include <string>
      
  4. #include <iostream>   
  5. using namespace std;  
  6. #define WSWENS MAKEWORD(2,0)   
  7. int main()  
  8. {  
  9.     sockaddr_in sin;  
  10.     WSADATA wsadata;  
  11.     if(WSAStartup(WSWENS, &wsadata) !=0)  
  12.         cout<<"startup failed"<<endl;  
  13.       
  14.     SOCKET s = socket(PF_INET,SOCK_STREAM,0);  
  15.     memset(&sin, 0, sizeof(sin));  
  16.     sin.sin_family = AF_INET;  
  17.     sin.sin_port = htons(25);  
  18.     hostent* hptr = gethostbyname("smtp.sina.com");  
  19.     memcpy(&sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length);  
  20.     printf("IP of smpt.sina.com is : %d:%d:%d:%d",  
  21.         sin.sin_addr.S_un.S_un_b.s_b1,  
  22.         sin.sin_addr.S_un.S_un_b.s_b2,  
  23.         sin.sin_addr.S_un.S_un_b.s_b3,  
  24.         sin.sin_addr.S_un.S_un_b.s_b4);  
  25.       
  26.     cout << endl;  
  27.     if(connect(s, (sockaddr*)&sin, sizeof(sin)))  
  28.     {  
  29.         cout << "connect failed" << endl;  
  30.         exit(0);  
  31.     }  
  32.     else  
  33.     {  
  34.         cout << "connect success" << endl;  
  35.     }  
  36.       
  37.     char bufferresv[10240];  
  38.     int len = recv(s, bufferresv, 10240, 0);  
  39.     bufferresv[len]=0;  
  40.     printf("%s",bufferresv);  
  41.     cout << endl;  
  42.     // send "helo ehlo"   
  43.     char bufferHello[] = "helo ehlo/r/n";  
  44.     cout << "helo ehlo..." << endl;  
  45.     send(s, bufferHello, strlen(bufferHello), 0);  
  46.     len = recv(s, bufferresv, 10240, 0);  
  47.     bufferresv[len]=0;  
  48.     printf("%s",bufferresv);  
  49.     cout << endl;  
  50.     // send "auth login"   
  51.     char bufferLogin[] = "auth login/r/n";  
  52.     cout << "auth login..." << endl;  
  53.     send(s, bufferLogin, strlen(bufferLogin),0);  
  54.     len = recv(s, bufferresv, 10240, 0);  
  55.       
  56.     bufferresv[len]=0;  
  57.     printf("%s",bufferresv);  
  58.       
  59.     cout << endl;  
  60.     // send "username" send "psw"   
  61.     char bufferUserName[] = "c3VubnlrYWhv/r/n";  
  62.     char bufferpsw[] = "MjAwNzE2MTA0MDk=/r/n";  
  63.       
  64.     cout << "input username...." << endl;  
  65.     send(s,bufferUserName,strlen(bufferUserName),0);  
  66.     len = recv(s, bufferresv, 10240, 0);  
  67.     bufferresv[len]=0;  
  68.     printf("%s",bufferresv);  
  69.     cout << endl;  
  70.     cout << "input password..." << endl;  
  71.     send(s,bufferpsw,strlen(bufferpsw),0);  
  72.     len = recv(s, bufferresv, 10240, 0);  
  73.     bufferresv[len]=0;  
  74.     printf("%s",bufferresv);  
  75.     cout << endl;  
  76.     // mail from:<sunnykaho@sina.com>
      
  77.     char bufferMailFrom[] = "mail from:<sunnykaho@sina.com>/r/n";  
  78.     cout << "mail from:<sunnykaho@sina.com>..." << endl;  
  79.     send(s, bufferMailFrom, strlen(bufferMailFrom), 0);  
  80.     len = recv(s, bufferresv, 10240, 0);  
  81.     bufferresv[len]=0;  
  82.     printf("%s",bufferresv);  
  83.     cout << endl;  
  84.     // rcpt to:<kaholi@qq.com>   
  85.     char bufferRcptTo[] = "rcpt to:<kaholi@qq.com>/r/n";  
  86.     cout << "rcpt to:<kaholi@qq.com>..." << endl;  
  87.     send(s, bufferRcptTo, strlen(bufferRcptTo), 0);  
  88.     len = recv(s, bufferresv, 10240, 0);  
  89.     bufferresv[len]=0;  
  90.     printf("%s",bufferresv);  
  91.     cout << endl;  
  92.       
  93.     // data   
  94.     char bufferData[] = "data/r/n";  
  95.     cout << "data..." << endl;  
  96.     send(s, bufferData,strlen(bufferData), 0);  
  97.     len = recv(s, bufferresv, 10240, 0);  
  98.     bufferresv[len]=0;  
  99.     printf("%s",bufferresv);  
  100.     cout << endl;  
  101.     //    
  102.     char bufferTo[] = "to:kaholi@qq.com/r/n";  
  103.     char bufferFrom[] = "from:sunnykaho@sina.com/r/n";  
  104.     cout << "to:kaholi@qq.com... " << endl;  
  105.     send(s, bufferTo, strlen(bufferTo),0);  
  106.     cout << "from:sunnykaho@sina.com..." << endl;  
  107.     send(s, bufferFrom, strlen(bufferFrom), 0);  
  108.       
  109.     char bufferSubject[] = "subject:hello from kaho/r/n";  
  110.     cout << "subject:hello from kaho..." << endl;  
  111.     send(s, bufferSubject, strlen(bufferSubject), 0);  
  112.     char bufferPoint[] = "./r/n";  
  113.     send(s, bufferPoint, strlen(bufferPoint), 0);  
  114.     len = recv(s, bufferresv, 10240, 0);  
  115.     bufferresv[len]=0;  
  116.     printf("%s",bufferresv);  
  117.     cout << endl;  
  118. }  

#include <winsock.h><br />#include <stdio.h><br />#include <string><br />#include <iostream><br />using namespace std;<br />#define WSWENS MAKEWORD(2,0)<br />int main()<br />{<br />sockaddr_in sin;<br />WSADATA wsadata;<br />if(WSAStartup(WSWENS, &wsadata) !=0)<br />cout<<"startup failed"<<endl;</p><p>SOCKET s = socket(PF_INET,SOCK_STREAM,0);<br />memset(&sin, 0, sizeof(sin));<br />sin.sin_family = AF_INET;<br />sin.sin_port = htons(25);<br />hostent* hptr = gethostbyname("smtp.sina.com");<br />memcpy(&sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length);<br />printf("IP of smpt.sina.com is : %d:%d:%d:%d",<br />sin.sin_addr.S_un.S_un_b.s_b1,<br />sin.sin_addr.S_un.S_un_b.s_b2,<br />sin.sin_addr.S_un.S_un_b.s_b3,<br />sin.sin_addr.S_un.S_un_b.s_b4);</p><p>cout << endl;<br />if(connect(s, (sockaddr*)&sin, sizeof(sin)))<br />{<br />cout << "connect failed" << endl;<br />exit(0);<br />}<br />else<br />{<br />cout << "connect success" << endl;<br />}</p><p>char bufferresv[10240];<br />int len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />// send "helo ehlo"<br />char bufferHello[] = "helo ehlo/r/n";<br />cout << "helo ehlo..." << endl;<br />send(s, bufferHello, strlen(bufferHello), 0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />// send "auth login"<br />char bufferLogin[] = "auth login/r/n";<br />cout << "auth login..." << endl;<br />send(s, bufferLogin, strlen(bufferLogin),0);<br />len = recv(s, bufferresv, 10240, 0);</p><p>bufferresv[len]=0;<br />printf("%s",bufferresv);</p><p>cout << endl;<br />// send "username" send "psw"<br />char bufferUserName[] = "c3VubnlrYWhv/r/n";<br />char bufferpsw[] = "MjAwNzE2MTA0MDk=/r/n";</p><p>cout << "input username...." << endl;<br />send(s,bufferUserName,strlen(bufferUserName),0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />cout << "input password..." << endl;<br />send(s,bufferpsw,strlen(bufferpsw),0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />// mail from:<sunnykaho@sina.com><br />char bufferMailFrom[] = "mail from:<sunnykaho@sina.com>/r/n";<br />cout << "mail from:<sunnykaho@sina.com>..." << endl;<br />send(s, bufferMailFrom, strlen(bufferMailFrom), 0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />// rcpt to:<kaholi@qq.com><br />char bufferRcptTo[] = "rcpt to:<kaholi@qq.com>/r/n";<br />cout << "rcpt to:<kaholi@qq.com>..." << endl;<br />send(s, bufferRcptTo, strlen(bufferRcptTo), 0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;</p><p>// data<br />char bufferData[] = "data/r/n";<br />cout << "data..." << endl;<br />send(s, bufferData,strlen(bufferData), 0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />//<br />char bufferTo[] = "to:kaholi@qq.com/r/n";<br />char bufferFrom[] = "from:sunnykaho@sina.com/r/n";<br />cout << "to:kaholi@qq.com... " << endl;<br />send(s, bufferTo, strlen(bufferTo),0);<br />cout << "from:sunnykaho@sina.com..." << endl;<br />send(s, bufferFrom, strlen(bufferFrom), 0);</p><p>char bufferSubject[] = "subject:hello from kaho/r/n";<br />cout << "subject:hello from kaho..." << endl;<br />send(s, bufferSubject, strlen(bufferSubject), 0);<br />char bufferPoint[] = "./r/n";<br />send(s, bufferPoint, strlen(bufferPoint), 0);<br />len = recv(s, bufferresv, 10240, 0);<br />bufferresv[len]=0;<br />printf("%s",bufferresv);<br />cout << endl;<br />}  

 

以上代碼感謝超哥像春哥般的光環照耀下做出來的...

 

如果想引用部落格內容,請在明顯的地方注釋清楚轉帖並且包含我們原帖的地址引用,謝謝,如果有任何問題,可以在日誌下面留言。我儘力解答。

原文網址:http://blog.csdn.net/sunnykaho/archive/2009/12/02/4927178.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.