SMTP基本上已经很少有人用了,这个程序单纯是为了练习吧~单纯模拟模拟telnet 来连接stmp服务器发邮件

#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 "hello ooxx"
    char bufferHello[] = "helo ooxx/r/n";
    cout << "hello ooxx…" << 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[] = "username/r/n";
    char bufferpsw[] = "psw=/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:<xu_shine@sina.com>/r/n";
    cout << "mail from:<xu_shine@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:<100187210@qq.com>/r/n";
    cout << "rcpt to:<100187210@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:100187210@qq.com/r/n";
    char bufferFrom[] = "from:xu_shine@sina.com/r/n";
    cout << "to:100187210@qq.com… " << endl;
    send(s, bufferTo, strlen(bufferTo),0);
    cout << "from:xu_shine@sina.com…" << endl;
    send(s, bufferFrom, strlen(bufferFrom), 0);
   
    char bufferSubject[] = "subject:hello from xu_shine/r/n";
    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;
}

评论被关闭。