c++发邮件

void  SendEmail(CString strFrom,CString strSmtp,CString strTo,CString strSubject,CString strData)
{
    sockaddr_in sin;
    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(strSmtp); 
    memcpy(&sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length); 
    if(connect(s, (sockaddr*)&sin, sizeof(sin))) 
    { 
        AfxMessageBox( "connect failed" ); 
        return; 
    } 
    char bufferresv[1024]; 
    int len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0;

    char bufferHello[] = "helo ehlo\r\n";  
    send(s, bufferHello, strlen(bufferHello), 0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0;   
    // send "auth login"  
    char bufferLogin[] = "auth login\r\n"; 
    send(s, bufferLogin, strlen(bufferLogin),0); 
    len = recv(s, bufferresv, 1024, 0); 
    // send "username" send "psw"  
    char bufferUserName[] = "登录名字的BASE64密文\r\n"; 
    char bufferpsw[] = "密码的BASE64密文\r\n"; 
      
    send(s,bufferUserName,strlen(bufferUserName),0); 
    len = recv(s, bufferresv, 1024, 0);  
    send(s,bufferpsw,strlen(bufferpsw),0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0; 

    // mail from: 
    CString   strMailFrom;
    strMailFrom.Format("mail from:<%s>\r\n",strFrom);
    send(s, strMailFrom, strMailFrom.GetLength(), 0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0; 
    // rcpt to:    
    CString strMailTo;
    strMailTo.Format("rcpt to:<%s>\r\n",strTo);
    send(s, strMailTo, strMailTo.GetLength(), 0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0;   
     
    // data  
    char bufferData[] = "data\r\n"; 
    send(s, bufferData,strlen(bufferData), 0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0;   
    strData.Format("%s\r\n",strData);
    send(s,strData, strData.GetLength(),0); 
 send(s,strData, strData.GetLength(),0);
    CString strSub;
    strSub.Format("subject:%s\r\n",strSubject);
    send(s, strSub, strSub.GetLength(), 0); 
    char bufferPoint[] = ".\r\n"; 
    send(s, bufferPoint, strlen(bufferPoint), 0); 
    len = recv(s, bufferresv, 1024, 0); 
    bufferresv[len]=0; 

}

posted on 2012-02-27 17:22  fanhongyue  阅读(698)  评论(0编辑  收藏  举报

导航