| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 875 人关注过本帖
标题:我这个出错了,我不知道怎么改,谢谢大家能帮忙
取消只看楼主 加入收藏
baiye00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-29
收藏
 问题点数:0 回复次数:2 
我这个出错了,我不知道怎么改,谢谢大家能帮忙
#include<windows.h>
#include<stdio.h>
#include<WinSock.h>
#include<iostream>
using namespace std;
struct Base64Date6
{
unsigned int d4:6;
unsigned int d3:6;
unsigned int d2:6;
unsigned int d1:6;
};
//  协议中加密部分使用的是base64方法
char ConvertToBase64(char c6);
void EncodeBase64(char*dbuf,char*buf128,int len);
void SendMail(char*email,char*body,char* hostname ,short port,char *username,char *password);
int  OpenSocket(struct sockaddr *addr);
int main(int argc,char *argv[])
{
   
 
 char *EmailTo=argv[1];   
 char *host=argv[2];
 char *port=argv[3];
 
 char *user=argv[4];
 char *pass=argv[5];
 char *subject=argv[6];
 char *filename=argv[7];
 char *EmailContents=new char[20000];
 
 char *From=new char[128];
 sprintf(From,"From: <%s>\r\n",user);
 char *To=new char[128];
 sprintf(To,"To: <%s>\r\n",EmailTo);
 char *sub=new char[128];
 sprintf(sub,"Subject: %s\r\n\r",subject);
 
 short porttemp=0;
 for(int i=0;i<strlen(port);i++)
 {
            porttemp=porttemp*10+port[i]-'0';
    }
 FILE *fp;
 fp=fopen(filename,"rb");
 if(!fp)//error
        {     
               printf("File path error\n");           
               return false;      
        }
 fseek(fp, 0L, SEEK_END);
    int fileSize = ftell(fp);
    fseek(fp, 0L, SEEK_SET);
 cout<<fileSize<<endl;
 char content[fileSize];
 fread(content,1,fileSize,fp);
 cout<<content<<endl;
 fclose(fp);
 
 sprintf(EmailContents,"%s%s%s%s",From,To ,sub,content);
 cout<<EmailContents<<endl;
    SendMail(EmailTo,EmailContents,host,porttemp,user,pass);
 system("PAUSE");
    return 0;
}
char ConvertToBase64(char uc)
{
     if(uc <26)
     {
           return 'A'+uc;
     }
     if(uc <52)
     {
           return 'a'+(uc -26);
     }
     if(uc <62)
     {
           return '0'+(uc -52);
     }
     if(uc ==62)
     {
           return '+';
     }
     return '/';
}
// base64的实现
void EncodeBase64(char *dbuf,char *buf128,int len)
{
     struct Base64Date6*ddd =NULL;
     int i =0;
     char buf[256]={0};
     char *tmp =NULL;
     char cc ='\0';
     memset(buf,0,256);
     strcpy(buf,buf128);
     for(i =1;i <=len/3;i++)
     {
           tmp =buf +(i-1)*3;
           cc =tmp[2];
           tmp[2]=tmp[0];
           tmp[0]=cc;
           ddd =(struct Base64Date6*)tmp;
           dbuf[(i-1)*4+0]=ConvertToBase64((unsigned int)ddd->d1);
           dbuf[(i-1)*4+1]=ConvertToBase64((unsigned int)ddd->d2);
           dbuf[(i-1)*4+2]=ConvertToBase64((unsigned int)ddd->d3);
           dbuf[(i-1)*4+3]=ConvertToBase64((unsigned int)ddd->d4);
     }
     if(len %3==1)
     {
            tmp =buf +(i-1)*3;
            cc =tmp[2];
            tmp[2]=tmp[0];
            tmp[0]=cc;
            ddd =(struct Base64Date6*)tmp;
            dbuf[(i-1)*4+0]=ConvertToBase64((unsigned int)ddd->d1);
            dbuf[(i-1)*4+1]=ConvertToBase64((unsigned int)ddd->d2);
            dbuf[(i-1)*4+2]='=';
            dbuf[(i-1)*4+3]='=';
     }
     if(len%3==2)
     {
            tmp =buf+(i-1)*3;
            cc =tmp[2];
            tmp[2]=tmp[0];
            tmp[0]=cc;
            ddd =(struct Base64Date6*)tmp;
            dbuf[(i-1)*4+0]=ConvertToBase64((unsigned int)ddd->d1);
            dbuf[(i-1)*4+1]=ConvertToBase64((unsigned int)ddd->d2);
            dbuf[(i-1)*4+2]=ConvertToBase64((unsigned int)ddd->d3);
            dbuf[(i-1)*4+3]='=';
     }
     return;
}
// 发送邮件
void SendMail(char*email,char*body,char* hostname ,short port,char *username,char *password)
{
     int sockfd ={0};
     char buf[1500]={0};
     char rbuf[1500]={0};
     char login[128]={0};
     char pass[128]={0};
     WSADATA WSAData;
     struct sockaddr_in their_addr ={0};
     WSAStartup(MAKEWORD(2,2),&WSAData);
     memset(&their_addr,0,sizeof(their_addr));
     their_addr.sin_family =AF_INET;
     their_addr.sin_port =htons(port);
     hostent*hptr =gethostbyname(hostname);
     memcpy(&their_addr.sin_addr.S_un.S_addr,hptr->h_addr_list[0],hptr->h_length);
     printf("IP of %s is : %d:%d:%d:%d\n",
   hostname,
     their_addr.sin_addr.S_un.S_un_b.s_b1,
     their_addr.sin_addr.S_un.S_un_b.s_b2,
     their_addr.sin_addr.S_un.S_un_b.s_b3,
     their_addr.sin_addr.S_un.S_un_b.s_b4);
    // 连接邮箱服务器,如果连接后没有响应,则2 秒后重新连接
     sockfd =OpenSocket((struct sockaddr *)&their_addr);
     memset(rbuf,0,1500);
     while(recv(sockfd,rbuf,1500,0)==0)
     {
            cout<<"reconnect..."<<endl;
            Sleep(2);
            sockfd =OpenSocket((struct sockaddr *)&their_addr);
            memset(rbuf,0,1500);
     }
     cout<<rbuf<<endl;
     // EHLO
     memset(buf,0,1500);
     sprintf(buf,"EHLO HYL-PC\r\n");
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"EHLO REceive: "<<rbuf<<endl;
     // AUTH LOGIN
     memset(buf,0,1500);
     sprintf(buf,"AUTH LOGIN\r\n");
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Auth Login Receive: "<<rbuf<<endl;
     // USER
     memset(buf,0,1500);
     sprintf(buf,username);//user
     memset(login,0,128);
     EncodeBase64(login,buf,strlen(buf));
     sprintf(buf,"%s\r\n",login);
     send(sockfd,buf,strlen(buf),0);
     cout<<"Base64 UserName: "<<buf<<endl;
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"User Login Receive: "<<rbuf<<endl;
     // PASSWORD
     sprintf(buf,password);//password
     memset(pass,0,128);
     EncodeBase64(pass,buf,strlen(buf));
     sprintf(buf,"%s\r\n",pass);
     send(sockfd,buf,strlen(buf),0);
     cout<<"Base64 Password: "<<buf<<endl;
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Send Password Receive: "<<rbuf<<endl;
     // MAIL FROM
     memset(buf,0,1500);
     sprintf(buf,"MAIL FROM: <%s>\r\n",username);
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"set Mail From Receive: "<<rbuf<<endl;
     // RCPT TO 第一个收件人
     sprintf(buf,"RCPT TO:<%s>\r\n",email);
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Tell Sendto Receive: "<<rbuf<<endl;
     // DATA 准备开始发送邮件内容
     sprintf(buf,"DATA\r\n");
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Send Mail Prepare Receive: "<<rbuf<<endl;
     // 发送邮件内容,\r\n.\r\n内容结束标记
     sprintf(buf,"%s\r\n.\r\n",body);
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Send Mail Receive: "<<rbuf<<endl;
     // QUIT
     sprintf(buf,"QUIT\r\n");
     send(sockfd,buf,strlen(buf),0);
     memset(rbuf,0,1500);
     recv(sockfd,rbuf,1500,0);
     cout<<"Quit Receive: "<<rbuf<<endl;
     //清理工作
     closesocket(sockfd);
     WSACleanup();
     return;
}
//打开TCP Socket连接
int OpenSocket(struct sockaddr *addr)
{
    int sockfd =0;
    sockfd=socket(PF_INET,SOCK_STREAM,0);
    if(sockfd <0)
    {
              cout<<"Open sockfd(TCP) error!"<<endl;
              exit(-1);
    }
    if(connect(sockfd,addr,sizeof(struct sockaddr))<0)
    {
              cout<<"Connect sockfd(TCP) error!"<<endl;
              exit(-1);
    }
    return sockfd;
}

哪里错了啊
搜索更多相关主题的帖子: password include email 加密 
2013-09-29 17:09
baiye00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-29
收藏
得分:0 
这个是邮件群发的软件的代码,出错显示是这样的,--------------------Configuration: lz8 - Win32 Debug--------------------
Compiling...
lz8.cpp
F:\yc\c\vc6cn\sf\lz8\lz8.cpp(5) : error C2501: 'usingnamespacestd' : missing storage-class or type specifiers
F:\yc\c\vc6cn\sf\lz8\lz8.cpp(6) : fatal error C1021: invalid preprocessor command 'pragmacomment'
执行 cl.exe 时出错.

lz8.obj - 1 error(s), 0 warning(s)


我是新手啊,真的不是很懂,这都是复制的代码,但是还是不知道哪里错了,谢谢大家了啊,
2013-09-30 09:14
baiye00
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-9-29
收藏
得分:0 
2013-10-08 18:01
快速回复:我这个出错了,我不知道怎么改,谢谢大家能帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017758 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved