C++发送邮件和附件(2)

2019-02-16 00:46

??? for(i=0;i<(int)strlen(filePath);i++) ??? {

??? if(filePath[strlen(filePath)-1-i]=='\\\\') ??? {

??? memcpy(fileName,&filePath[strlen(filePath)-i],i); ??? return; ??? } ??? } ??? } ???

??? bool CSendMail::CReateSocket(SOCKET &sock) ??? {

??? WORD wVersionRequested; ??? WSADATA wsaData; ??? int err;

??? wVersionRequested = MAKEWORD( 2, 2 );

??? err = WSAStartup( wVersionRequested, &wsaData ); ??? if ( err != 0 ) ??? {

??? return false; ??? }

??? if ( LOBYTE( wsaData.wVersion ) != 2 || ??? HIBYTE( wsaData.wVersion ) != 2 ) ??? {

??? WSACleanup( ); ??? return false; ??? }

??? sock = socket(AF_INET,SOCK_STREAM,IPPROTO_IP); ??? if (sock == INVALID_SOCKET) ??? {

??? return false; ??? } ???

??? sockaddr_in servaddr;

??? memset(&servaddr,0,sizeof(sockaddr_in)); ??? servaddr.sin_family = AF_INET;

??? servaddr.sin_port = htons(25);//发邮件一般都是25端口 ??? if(m_sMailInfo.m_pcIPName==\) ??? {

??? servaddr.sin_addr.s_addr = inet_addr(m_sMailInfo.m_pcIPAddr);//直接使用IP地址 ??? } ??? else ??? {

??? struct hostent *hp=gethostbyname(m_sMailInfo.m_pcIPName);//使用名称 ??? servaddr.sin_addr.s_addr=*(int*)(*hp->h_addr_list); ??? } ??? ???

??? int ret = connect(sock,(sockaddr*)&servaddr,sizeof(servaddr));//建立连接 ??? if (ret == SOCKET_ERROR) ??? {

??? return false; ??? } ???

??? return true; ??? } ??? ???

??? bool CSendMail::Logon(SOCKET &sock) ??? {

??? recv(sock,m_cReceiveBuff,1024,0); ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff)); ??? sprintf_s(m_cSendBuff,\);

??? send(sock,m_cSendBuff,strlen(m_cSendBuff),0);//开始会话 ??? recv(sock,m_cReceiveBuff,1024,0);

??? if(m_cReceiveBuff[0]!='2' || m_cReceiveBuff[1]!='5' || m_cReceiveBuff[2]!='0') ??? {

??? return false; ??? } ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff)); ??? sprintf_s(m_cSendBuff,\);

??? send(sock,m_cSendBuff,strlen(m_cSendBuff),0);//请求登录 ??? recv(sock,m_cReceiveBuff,1024,0);

??? if(m_cReceiveBuff[0]!='3' || m_cReceiveBuff[1]!='3' || m_cReceiveBuff[2]!='4') ??? {

??? return false; ??? } ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff)); ???

Char2Base64(m_cSendBuff,m_sMailInfo.m_pcUserName,strlen(m_sMailInfo.m_pcUserName));

??? m_cSendBuff[strlen(m_cSendBuff)]='\\r';

??? m_cSendBuff[strlen(m_cSendBuff)]='\\n';

??? send(sock,m_cSendBuff,strlen(m_cSendBuff),0);//发送用户名 ??? recv(sock,m_cReceiveBuff,1024,0);

??? if(m_cReceiveBuff[0]!='3' || m_cReceiveBuff[1]!='3' || m_cReceiveBuff[2]!='4') ??? {

??? return false; ??? } ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff)); ???

Char2Base64(m_cSendBuff,m_sMailInfo.m_pcUserPassWord,strlen(m_sMailInfo.m_pcUserPassWord));

??? m_cSendBuff[strlen(m_cSendBuff)]='\\r'; ??? m_cSendBuff[strlen(m_cSendBuff)]='\\n';

??? send(sock,m_cSendBuff,strlen(m_cSendBuff),0);//发送用户密码 ??? recv(sock,m_cReceiveBuff,1024,0);

??? if(m_cReceiveBuff[0]!='2' || m_cReceiveBuff[1]!='3' || m_cReceiveBuff[2]!='5') ??? {

??? return false; ??? }

??? return true;//登录成功 ??? } ??? ???

??? bool CSendMail::SendHead(SOCKET &sock) ??? {

??? int rt;

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff));

??? sprintf_s(m_cSendBuff,\,m_sMailInfo.m_pcSender); ??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ???

??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? }

??? recv(sock,m_cReceiveBuff,1024,0); ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff));

??? sprintf_s(m_cSendBuff,\,m_sMailInfo.m_pcReceiver); ??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? }

??? recv(sock,m_cReceiveBuff,1024,0); ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff));

??? memcpy(m_cSendBuff,\,strlen(\)); ??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? }

??? recv(sock,m_cReceiveBuff,1024,0); ???

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff)); ???

sprintf_s(m_cSendBuff,\,m_sMailInfo.m_pcSenderName,m_sMailInfo.m_pcSender); ???

sprintf_s(&m_cSendBuff[strlen(m_cSendBuff)],150,\,m_sMailInfo.m_pcReceiver); ???

sprintf_s(&m_cSendBuff[strlen(m_cSendBuff)],150,\1.0\\r\\nContent-Type: multipart/mixed;

boundary=\\\,m_sMailInfo.m_pcTitle); ??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? } ???

??? return true; ??? } ???

??? bool CSendMail::SendTextBody(SOCKET &sock) ??? {

??? int rt;

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff));

??? sprintf_s(m_cSendBuff,\charset=\\\,m_sMailInfo.m_pcBody); ??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? }

??? else ??? {

??? return true; ??? } ??? } ???

??? bool CSendMail::SendFileBody(SOCKET &sock) ??? {

??? int i;

??? char* filePath; ??? int rt; ??? int len; ??? int pt=0;

??? char fileName[128];

??? for(i=0;i

??? pt=0;

??? memset(fileName,0,128);

??? filePath=m_pcFilePathList.GetAt(m_pcFilePathList.FindIndex(i)); ??? len=GetFileData(filePath); ??? GetFileName(fileName,filePath); ???

??? sprintf_s(m_cSendBuff,\

application/octet-stream;\\r\\n name=\\\base64\\r\\nContent-Disposition: attachment;\\r\\n filename=\\\,fileName,fileName);

??? send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? while (pt

??? memset(m_cSendBuff,0,sizeof(m_cSendBuff));

??? Char2Base64(m_cSendBuff,&m_pcFileBuff[pt],min(len-pt,3000)); ??? m_cSendBuff[strlen(m_cSendBuff)]='\\r'; ??? m_cSendBuff[strlen(m_cSendBuff)]='\\n';

??? rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0); ??? pt+=min(len-pt,3000); ??? if(rt!=strlen(m_cSendBuff)) ??? {

??? return false; ??? } ??? }

??? if(len!=0) ??? {

??? delete [] m_pcFileBuff; ??? }


C++发送邮件和附件(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:可以让孩子每天背一句(英语)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: