【C++】【网络】利用Socket 编写SMTP 发送邮件程序
2009-12-02 22:11
555 查看
#include <winsock.h> #include <stdio.h> #include <string> #include <iostream> using namespace std; #define WSWENS MAKEWORD(2,0) int main() { sockaddr_in sin; WSADATA wsadata; if(WSAStartup(WSWENS, &wsadata) !=0) cout<<"startup failed"<<endl; SOCKET s = socket(PF_INET,SOCK_STREAM,0); memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_port = htons(25); hostent* hptr = gethostbyname("smtp.sina.com"); memcpy(&sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length); printf("IP of smpt.sina.com is : %d:%d:%d:%d", sin.sin_addr.S_un.S_un_b.s_b1, sin.sin_addr.S_un.S_un_b.s_b2, sin.sin_addr.S_un.S_un_b.s_b3, sin.sin_addr.S_un.S_un_b.s_b4); cout << endl; if(connect(s, (sockaddr*)&sin, sizeof(sin))) { cout << "connect failed" << endl; exit(0); } else { cout << "connect success" << endl; } char bufferresv[10240]; int len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // send "helo ehlo" char bufferHello[] = "helo ehlo/r/n"; cout << "helo ehlo..." << endl; send(s, bufferHello, strlen(bufferHello), 0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // send "auth login" char bufferLogin[] = "auth login/r/n"; cout << "auth login..." << endl; send(s, bufferLogin, strlen(bufferLogin),0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // send "username" send "psw" char bufferUserName[] = "c3VubnlrYWhv/r/n"; char bufferpsw[] = "MjAwNzE2MTA0MDk=/r/n"; cout << "input username...." << endl; send(s,bufferUserName,strlen(bufferUserName),0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; cout << "input password..." << endl; send(s,bufferpsw,strlen(bufferpsw),0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // mail from:<sunnykaho@sina.com> char bufferMailFrom[] = "mail from:<sunnykaho@sina.com>/r/n"; cout << "mail from:<sunnykaho@sina.com>..." << endl; send(s, bufferMailFrom, strlen(bufferMailFrom), 0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // rcpt to:<kaholi@qq.com> char bufferRcptTo[] = "rcpt to:<kaholi@qq.com>/r/n"; cout << "rcpt to:<kaholi@qq.com>..." << endl; send(s, bufferRcptTo, strlen(bufferRcptTo), 0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // data char bufferData[] = "data/r/n"; cout << "data..." << endl; send(s, bufferData,strlen(bufferData), 0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; // char bufferTo[] = "to:kaholi@qq.com/r/n"; char bufferFrom[] = "from:sunnykaho@sina.com/r/n"; cout << "to:kaholi@qq.com... " << endl; send(s, bufferTo, strlen(bufferTo),0); cout << "from:sunnykaho@sina.com..." << endl; send(s, bufferFrom, strlen(bufferFrom), 0); char bufferSubject[] = "subject:hello from kaho/r/n"; cout << "subject:hello from kaho..." << endl; send(s, bufferSubject, strlen(bufferSubject), 0); char bufferPoint[] = "./r/n"; send(s, bufferPoint, strlen(bufferPoint), 0); len = recv(s, bufferresv, 10240, 0); bufferresv[len]=0; printf("%s",bufferresv); cout << endl; }
以上代码感谢超哥像春哥般的光环照耀下做出来的...
如果想引用博客内容,请在明显的地方注释清楚转帖并且包含我们原帖的地址引用,谢谢,如果有任何问题,可以在日志下面留言。我尽力解答。
原文网址:http://blog.csdn.net/sunnykaho/archive/2009/12/02/4927178.aspx
相关文章推荐
- 利用Socket 编写SMTP 发送邮件程序
- linux下用C编写的基于smtp的邮件发送程序
- linux下用C编写的基于smtp的邮件发送程序【转】
- 利用Python的SocketServer框架编写网络服务程序
- linux下用C编写的基于smtp的带附件邮件发送程序
- JNDI(二)编写具有SMTP服务器功能的邮件发送程序
- 利用Python的SocketServer框架编写网络服务程序
- c++多线程编写网络聊天室程序(socket)
- linux下用C编写的基于smtp的邮件发送程序
- 用Delphi编写SMTP邮件发送程序
- socket应用(三) 用C语言编写发送邮件程序
- 【学习笔记】计算机网络-利用TELNET进行SMTP的邮件发送
- socket应用(三) 用C语言编写发送邮件程序
- socket应用 用C语言编写发送邮件程序
- c++多线程编写网络聊天室程序(socket)
- linux下用C编写的基于smtp的邮件发送程序
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
- 利用TCP协议通过Socket编写的网络聊天工具2-通用类设计
- 编写一个C#Windows服务程序,定时从数据库中拿出记录发送邮件。
- Python简单学习(lecture7)CGI编程、MySQL、网络编程、SMTP发送邮件