资源描述:
《C++的STP类发送邮件.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C++的SMTP类发送邮件intCMail::sendmail(){intcrecv;if(smtplogin()==0){return0;}//发送mailfrom返回250sprintf(m_sendbuff,"%s%s%s","mailfrom:<",m_user,"@163.com>r");if(senddata()==0){return0;}if(recvdata()==0){return0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=MAIL_FROM_ERROR;return0;}//发送rcptto返回2
2、50sprintf(m_sendbuff,"%s%s%s","rcptto:<",m_rcptto,">r");if(senddata()==0){return0;}if(recvdata()==0){return0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=RCPT_TO_ERROR;return0;}//发送datar返回354sprintf(m_sendbuff,"%s","datar");if(senddata()==0){return0;}if(recvdata()==0){return0;}if
3、(strncmp(m_recvbuff,"354",3)!=NULL){m_error=DATA_ERROR;return0;}//信头if(!SetMailHeader(m_sendbuff)){m_error=MAILHEADER_ERROR;return0;}if(senddata()==0){return0;}//发送空行sprintf(m_sendbuff,"%s","rr");if(senddata()==0){return0;}//发送邮件bodysprintf(m_sendbuff,"%s%s",m_data,"r");if(senddata
4、()==0){return0;}if(m_attachment!=NULL){char**pp;for(pp=m_attachment;*pp!=0;pp++){FILE*fp;char*buf;//准备发送附件,首先发送分界线,必须!sprintf(m_sendbuff,"%s%s%s","--",BOUNDARY_TEXT,"r");if(senddata()==0){return0;}sprintf(m_sendbuff,"%s%s%s","Content-Type:application/x-msdownload;name="",strrchr(*pp,'\
5、')+1,""r");if(senddata()==0){return0;}sprintf(m_sendbuff,"%s","Content-Transfer-Encoding:base64r");if(senddata()==0){return0;}sprintf(m_sendbuff,"%s%s%s","Content-Disposition:attachment;filename="",strrchr(*pp,'\')+1,""rr");if(senddata()==0){return0;}//将文件base64编码后发送fp=fopen
6、(*pp,"rb");if(fp==NULL){m_error=OPEN_FILE_ERROR;return0;}buf=newchar[BUFFERSIZE+1];memset(buf,0,BUFFERSIZE+1);intreadcount=0;while(!feof(fp)){readcount=fread(buf,1,BUFFERSIZE,fp);if(readcount>0){*(buf+readcount)=' ';sprintf(m_sendbuff,"%s%s",base64(buf,ENCODE,readcount),"r");if(senddata
7、()==0){return0;}memset(buf,0,BUFFERSIZE+1);}}sprintf(m_sendbuff,"%s","r");if(senddata()==0){return0;}delete[]buf;fclose(fp);}}if(m_attachment!=NULL){//附件发送完毕,发送分界线sprintf(m_sendbuff,"%s%s%s","--",BOUNDARY_TEXT,"--r");if(senddata()==0){return0;}}//发