哪位大哥能提供一段VC发送邮件的代码?最好能带有注释
只能说主要代码,程序是一个整体,如果要直接编译通过,那就要整个发了 你自己改下吧int CMail::sendmail(){int crecv;if(smtplogin()==0){return 0;}//发送mail from 返回250sprintf(m_sendbuff,"%s%s%s","mail from:<",m_user,"@163.com>rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=MAIL_FROM_ERROR;return 0;}//发送rcpt to 返回250sprintf(m_sendbuff,"%s%s%s","rcpt to:<",m_rcptto,">rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=RCPT_TO_ERROR;return 0;}//发送datarn 返回354sprintf(m_sendbuff,"%s","datarn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"354",3)!=NULL){m_error=DATA_ERROR;return 0;}//信头if(!SetMailHeader(m_sendbuff)){m_error=MAILHEADER_ERROR;return 0;}if(senddata()==0){return 0;}//发送空行sprintf(m_sendbuff,"%s","rnrn");if(senddata()==0){return 0;}//发送邮件bodysprintf(m_sendbuff,"%s%s",m_data,"rn");if(senddata()==0){return 0;}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,"rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s%s%s","Content-Type: application/x-msdownload; name="",strrchr(*pp,'\')+1,""rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s","Content-Transfer-Encoding: base64rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s%s%s","Content-Disposition: attachment; filename="",strrchr(*pp,'\')+1,""rnrn");if(senddata()==0){return 0;}//将文件base64编码后发送fp=fopen(*pp,"rb");if(fp==NULL){m_error=OPEN_FILE_ERROR;return 0;}buf=new char[BUFFERSIZE+1];memset(buf,0,BUFFERSIZE+1);int readcount=0;while(!feof(fp)){readcount=fread(buf,1,BUFFERSIZE,fp);if(readcount>0){*(buf+readcount)=' ';sprintf(m_sendbuff,"%s%s",base64(buf,ENCODE,readcount),"rn");if(senddata()==0){return 0;}memset(buf,0,BUFFERSIZE+1);}}sprintf(m_sendbuff,"%s","rn");if(senddata()==0){return 0;}delete[] buf;fclose(fp);}}if(m_attachment!=NULL){//附件发送完毕,发送分界线sprintf(m_sendbuff,"%s%s%s","--",BOUNDARY_TEXT,"--rn");if(senddata()==0){return 0;}}//发送.rn 结束返回250sprintf(m_sendbuff,"%s",".rn");if(senddata()==0){return 0;}crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=END_DATA_ERROR;return 0;}else{showmessage(NULL,"邮件发送成功","",NULL);}//退出sprintf(m_sendbuff,"%s","quitrn");if(senddata()==0){return 0;}if(closesocket(s)!=0){m_error=CLOSE_SOCKET_ERROR;return 0;}if(WSACleanup()!=0){m_error=CLEANUP_WSA_ERROR;return 0;}return 1;}int CMail::senddata(){int idx = 0;int csend;int count=strlen(m_sendbuff);while(count>0){if((csend=send(s,m_sendbuff+idx,count,0))==SOCKET_ERROR){m_error =WSA_SEND_ERROR;return 0;}if(csend==0){break;}count-=csend;idx+=csend;}return 1;}int CMail::recvdata(){int crecv;crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(crecv==SOCKET_ERROR){m_error =WSA_RECV_ERROR;return 0;}else if(crecv==0){m_error=WSA_RECV_ERROR;return 0;}else{}return 1;}int CMail::chartoindex(char c){if(c>=65&&c<=90){c-=65;}else if(c>=97&&c<=122){c-=71;}else if(c>=48&&c<=57){c+=4;}else if(c==43)//'+'{c=62;}else if(c==47)//'/'{c=63;}else if(c==61)//'='{c=0;}else{m_error=DECODE_ERROR;return 0;}return c;}bool CMail::SetMailHeader(char* header){// "Date:","From:","To:",//"Message-ID:","Subject:","MIME-Version:",//"Content-Type:","X-Priority:",//"X-Mailer:","X-CM-TRANSID:","X-CM-SenderInfo:",//"X-Coremail-Antispam:","rnrn"TCHAR szDate[500];TCHAR sztTime[500];// Date: ":" ":" SYSTEMTIME st={0};::GetSystemTime(&st);::GetDateFormat(MAKELCID(0x0409,SORT_DEFAULT),0,&st,"ddd',' dd MMM yyyy",szDate,sizeof(szDate));::GetTimeFormat(MAKELCID(0x0409,SORT_DEFAULT),TIME_FORCE24HOURFORMAT,&st,"HH':'mm':'ss",sztTime,sizeof(sztTime));sprintf(header,"Date: %s %srn", szDate, sztTime);// From: "<" ">" if(m_mailfrom!=NULL){strcat(header,"From: ");strcat(header," <");strcat(header,m_mailfrom);strcat(header, ">rn");}// X-Mailer: if(m_xmailer!= NULL){strcat(header,"X-Mailer: ");strcat(header, m_xmailer);strcat(header, "rn");}// X-Priority: switch(m_priority){case XPRIORITY_HIGH:strcat(header,"X-Priority: 2 (High)rn");break;case XPRIORITY_NORMAL:strcat(header,"X-Priority: 3 (Normal)rn");break;case XPRIORITY_LOW:strcat(header,"X-Priority: 4 (Low)rn");break;default:strcat(header,"X-Priority: 3 (Normal)rn");}// To: if(m_rcptto!=NULL){strcat(header,"To: ");strcat(header, m_rcptto);strcat(header, "rn");}// Subject: if(m_subject!=NULL){strcat(header, "Subject: ");strcat(header, m_subject);strcat(header, "rn");}// MIME-Version: 1.0 strcat(header,"MIME-Version: 1.0rn");//attachmentif(m_attachment==NULL){ //如果没附件strcat(header,"Content-type: text/plain; charset=GB2312rn");strcat(header,"Content-Transfer-Encoding: 7bitrn");strcat(header,"rn");}else{ //如果有附件,设置分界线,每个子段以--BOUNDARY_TEXT行开始,父段则以--BOUNDARY_TEXT--行结束,不同段之间用空行分隔strcat(header,"Content-Type: multipart/mixed; boundary="");strcat(header,BOUNDARY_TEXT);strcat(header,""rn");strcat(header,"rn");//这个空行不能少//第一部分为文本内容strcat(header,"--");strcat(header,BOUNDARY_TEXT);strcat(header,"rn");//加上分界线//以下跟没附件时的一样strcat(header,"Content-type: text/plain; charset=GB2312rn");//注意GB2312 否则会出现中文乱码strcat(header,"Content-Transfer-Encoding: 7bitrn");}// donereturn true;}int CMail::senddata(){int idx = 0;int csend;int count=strlen(m_sendbuff);while(count>0){if((csend=send(s,m_sendbuff+idx,count,0))==SOCKET_ERROR){m_error =WSA_SEND_ERROR;return 0;}if(csend==0){break;}count-=csend;idx+=csend;}return 1;}int CMail::recvdata(){int crecv;crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(crecv==SOCKET_ERROR){m_error =WSA_RECV_ERROR;return 0;}else if(crecv==0){m_error=WSA_RECV_ERROR;return 0;}else{}return 1;}int CMail::smtplogin(){//调用成员函数connectif(connect()==0){return 0;}if(recvdata()==0){return 0;}if(strstr(m_recvbuff,"220")==NULL)//220{m_error=UNKNOWEN_ERROR;return 0;}//发送helo 返回250sprintf(m_sendbuff,"%s","helo 543880135rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=HELO_ERROR;return 0;}//发送auth login 返回334sprintf(m_sendbuff,"%s","auth loginrn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"334",3)!=NULL){m_error=AUTH_LOGIN_ERROR;return 0;}//发送经过base64编码后的用户名,返回334sprintf(m_sendbuff,"%s%s",base64(m_user,ENCODE,strlen(m_user)),"rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"334",3)!=NULL){m_error=USER_ERROR;return 0;}//发送经过base64编码后的密码 返回235sprintf(m_sendbuff,"%s%s",base64(m_pass,ENCODE,strlen(m_pass)),"rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"235",3)!=NULL){m_error=PASS_ERROR;return 0;}return 1;}int CMail::connect(){WSADATA wsadata;struct sockaddr_in sock_addr;HOSTENT *phostent;struct in_addr inaddr;if(WSAStartup(MAKEWORD(1,1),&wsadata)<0){m_error=WSA_INIT_ERROR;return 0;}/*---------------根据域名获取网络地址,存放在struct in_addr中----------------*/phostent=gethostbyname(m_server);//pop.163.comif(phostent!=NULL){// lpAddr=phostent->h_addr_list[0];memmove(&inaddr,phostent->h_addr_list[0],4);//220.181.12.101}else{m_error=CONNECTSERVER_ERROR;return 0;}/*---------------根据域名获取网络地址,存放在struct in_addr中----------------*/s=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);//SOCK_STREAM SOCK_DGRAMsock_addr.sin_family=AF_INET;sock_addr.sin_port=htons(m_port);sock_addr.sin_addr=inaddr;//直接结构体赋值给结构体,或者写成:sock_addr.sin_addr.s_addr=inaddr.S_un.S_addr;if(::connect(s,(struct sockaddr *)&sock_addr,sizeof(sock_addr))){m_error=CONNECT_ERROR;return 0;}return 1; }

TL-RAC1950G易展版缺少必要的参数
商品名称:TP-LINK TL-RAC1950G定制版(易展版)AC1900千兆端口路由器 白色商品编号:G5E8D49E411035上架时间:2021-02-09商品毛重:0.100kgTP-LINK易展套装路由器设置方法 - TP-LINK 服务支持,线路连好后,如果网口对应的指示灯不亮,则表明线路连接有问题,请检查确认网线连接牢固或尝试换一根网线。在路由器的底部标贴上查看路由器出厂的无线信号名称。打开手机的无线设置,连接路由器出厂的无线信号。连接Wi-Fi后,手机会自动弹出路由器的设置页面。若未自动弹出请打开浏览器,在地址栏输入tplogin.cn。在弹出的窗口中设置路由器的登录密码,(密码长度在6-32位区间),该密码用于以后管理路由器(登录界面),请妥善保管。登录成功后,路由器会自动检测上网方式。若上网方式检测为自动获取IP上网,则直接点击下一步,无需更改上网方式。若检测到上网方式为宽带拨号上网,则需要输入运营商提供的宽带账号和密码,输入完成后点击下一步进行设置。设置路由器的无线名称和无线密码,设置完成后,点击“完成”保存配置。请一定记住路由器的无线名称和无线密码,在后续连接路由器无线时需要用到。
商品名称:TP-LINK 无线路由器千兆易展 TL-RAC1950G 白色 参数 网络管理:支持 内置防火墙:支持WPS:支持 VPN:支持Wan口数量(千兆):3个Lan口数量(千兆):3个Wan口数量(百兆):3个Lan口数量(百兆):3个路由热点:低辐射,设置简单,手游路由,5G信号,防蹭网,游戏竞技WAN口(网线接入口):千兆网口LAN口(设备连接口):千兆网口网络协议:IEEE 802.11g,iEEE802.3u,IEEE 802.3,IEEE802.11b,IEEE 802.11n,IEEE802.11ac,IEEE 802.11ax适用面积:大户型(90-120cm)传输速率:1900Mbps 重量:200克

自动发邮件
只能说主要代码,程序是一个整体,如果要直接编译通过,那就要整个发了 你自己改下吧int CMail::sendmail(){int crecv;if(smtplogin()==0){return 0;}//发送mail from 返回250sprintf(m_sendbuff,"%s%s%s","mail from:<",m_user,"@163.com>rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=MAIL_FROM_ERROR;return 0;}//发送rcpt to 返回250sprintf(m_sendbuff,"%s%s%s","rcpt to:<",m_rcptto,">rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=RCPT_TO_ERROR;return 0;}//发送datarn 返回354sprintf(m_sendbuff,"%s","datarn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"354",3)!=NULL){m_error=DATA_ERROR;return 0;}//信头if(!SetMailHeader(m_sendbuff)){m_error=MAILHEADER_ERROR;return 0;}if(senddata()==0){return 0;}//发送空行sprintf(m_sendbuff,"%s","rnrn");if(senddata()==0){return 0;}//发送邮件bodysprintf(m_sendbuff,"%s%s",m_data,"rn");if(senddata()==0){return 0;}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,"rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s%s%s","Content-Type: application/x-msdownload; name="",strrchr(*pp,'\')+1,""rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s","Content-Transfer-Encoding: base64rn");if(senddata()==0){return 0;}sprintf(m_sendbuff,"%s%s%s","Content-Disposition: attachment; filename="",strrchr(*pp,'\')+1,""rnrn");if(senddata()==0){return 0;}//将文件base64编码后发送fp=fopen(*pp,"rb");if(fp==NULL){m_error=OPEN_FILE_ERROR;return 0;}buf=new char[BUFFERSIZE+1];memset(buf,0,BUFFERSIZE+1);int readcount=0;while(!feof(fp)){readcount=fread(buf,1,BUFFERSIZE,fp);if(readcount>0){*(buf+readcount)=' ';sprintf(m_sendbuff,"%s%s",base64(buf,ENCODE,readcount),"rn");if(senddata()==0){return 0;}memset(buf,0,BUFFERSIZE+1);}}sprintf(m_sendbuff,"%s","rn");if(senddata()==0){return 0;}delete[] buf;fclose(fp);}}if(m_attachment!=NULL){//附件发送完毕,发送分界线sprintf(m_sendbuff,"%s%s%s","--",BOUNDARY_TEXT,"--rn");if(senddata()==0){return 0;}}//发送.rn 结束返回250sprintf(m_sendbuff,"%s",".rn");if(senddata()==0){return 0;}crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=END_DATA_ERROR;return 0;}else{showmessage(NULL,"邮件发送成功","",NULL);}//退出sprintf(m_sendbuff,"%s","quitrn");if(senddata()==0){return 0;}if(closesocket(s)!=0){m_error=CLOSE_SOCKET_ERROR;return 0;}if(WSACleanup()!=0){m_error=CLEANUP_WSA_ERROR;return 0;}return 1;}int CMail::senddata(){int idx = 0;int csend;int count=strlen(m_sendbuff);while(count>0){if((csend=send(s,m_sendbuff+idx,count,0))==SOCKET_ERROR){m_error =WSA_SEND_ERROR;return 0;}if(csend==0){break;}count-=csend;idx+=csend;}return 1;}int CMail::recvdata(){int crecv;crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(crecv==SOCKET_ERROR){m_error =WSA_RECV_ERROR;return 0;}else if(crecv==0){m_error=WSA_RECV_ERROR;return 0;}else{}return 1;}int CMail::chartoindex(char c){if(c>=65&&c<=90){c-=65;}else if(c>=97&&c<=122){c-=71;}else if(c>=48&&c<=57){c+=4;}else if(c==43)//'+'{c=62;}else if(c==47)//'/'{c=63;}else if(c==61)//'='{c=0;}else{m_error=DECODE_ERROR;return 0;}return c;}bool CMail::SetMailHeader(char* header){// "Date:","From:","To:",//"Message-ID:","Subject:","MIME-Version:",//"Content-Type:","X-Priority:",//"X-Mailer:","X-CM-TRANSID:","X-CM-SenderInfo:",//"X-Coremail-Antispam:","rnrn"TCHAR szDate[500];TCHAR sztTime[500];// Date: ":" ":" SYSTEMTIME st={0};::GetSystemTime(&st);::GetDateFormat(MAKELCID(0x0409,SORT_DEFAULT),0,&st,"ddd',' dd MMM yyyy",szDate,sizeof(szDate));::GetTimeFormat(MAKELCID(0x0409,SORT_DEFAULT),TIME_FORCE24HOURFORMAT,&st,"HH':'mm':'ss",sztTime,sizeof(sztTime));sprintf(header,"Date: %s %srn", szDate, sztTime);// From: "<" ">" if(m_mailfrom!=NULL){strcat(header,"From: ");strcat(header," <");strcat(header,m_mailfrom);strcat(header, ">rn");}// X-Mailer: if(m_xmailer!= NULL){strcat(header,"X-Mailer: ");strcat(header, m_xmailer);strcat(header, "rn");}// X-Priority: switch(m_priority){case XPRIORITY_HIGH:strcat(header,"X-Priority: 2 (High)rn");break;case XPRIORITY_NORMAL:strcat(header,"X-Priority: 3 (Normal)rn");break;case XPRIORITY_LOW:strcat(header,"X-Priority: 4 (Low)rn");break;default:strcat(header,"X-Priority: 3 (Normal)rn");}// To: if(m_rcptto!=NULL){strcat(header,"To: ");strcat(header, m_rcptto);strcat(header, "rn");}// Subject: if(m_subject!=NULL){strcat(header, "Subject: ");strcat(header, m_subject);strcat(header, "rn");}// MIME-Version: 1.0 strcat(header,"MIME-Version: 1.0rn");//attachmentif(m_attachment==NULL){ //如果没附件strcat(header,"Content-type: text/plain; charset=GB2312rn");strcat(header,"Content-Transfer-Encoding: 7bitrn");strcat(header,"rn");}else{ //如果有附件,设置分界线,每个子段以--BOUNDARY_TEXT行开始,父段则以--BOUNDARY_TEXT--行结束,不同段之间用空行分隔strcat(header,"Content-Type: multipart/mixed; boundary="");strcat(header,BOUNDARY_TEXT);strcat(header,""rn");strcat(header,"rn");//这个空行不能少//第一部分为文本内容strcat(header,"--");strcat(header,BOUNDARY_TEXT);strcat(header,"rn");//加上分界线//以下跟没附件时的一样strcat(header,"Content-type: text/plain; charset=GB2312rn");//注意GB2312 否则会出现中文乱码strcat(header,"Content-Transfer-Encoding: 7bitrn");}// donereturn true;}int CMail::senddata(){int idx = 0;int csend;int count=strlen(m_sendbuff);while(count>0){if((csend=send(s,m_sendbuff+idx,count,0))==SOCKET_ERROR){m_error =WSA_SEND_ERROR;return 0;}if(csend==0){break;}count-=csend;idx+=csend;}return 1;}int CMail::recvdata(){int crecv;crecv=recv(s,m_recvbuff,MAX_LENGTH,0);if(crecv==SOCKET_ERROR){m_error =WSA_RECV_ERROR;return 0;}else if(crecv==0){m_error=WSA_RECV_ERROR;return 0;}else{}return 1;}int CMail::smtplogin(){//调用成员函数connectif(connect()==0){return 0;}if(recvdata()==0){return 0;}if(strstr(m_recvbuff,"220")==NULL)//220{m_error=UNKNOWEN_ERROR;return 0;}//发送helo 返回250sprintf(m_sendbuff,"%s","helo 543880135rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"250",3)!=NULL){m_error=HELO_ERROR;return 0;}//发送auth login 返回334sprintf(m_sendbuff,"%s","auth loginrn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"334",3)!=NULL){m_error=AUTH_LOGIN_ERROR;return 0;}//发送经过base64编码后的用户名,返回334sprintf(m_sendbuff,"%s%s",base64(m_user,ENCODE,strlen(m_user)),"rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"334",3)!=NULL){m_error=USER_ERROR;return 0;}//发送经过base64编码后的密码 返回235sprintf(m_sendbuff,"%s%s",base64(m_pass,ENCODE,strlen(m_pass)),"rn");if(senddata()==0){return 0;}if(recvdata()==0){return 0;}if(strncmp(m_recvbuff,"235",3)!=NULL){m_error=PASS_ERROR;return 0;}return 1;}int CMail::connect(){WSADATA wsadata;struct sockaddr_in sock_addr;HOSTENT *phostent;struct in_addr inaddr;if(WSAStartup(MAKEWORD(1,1),&wsadata)<0){m_error=WSA_INIT_ERROR;return 0;}/*---------------根据域名获取网络地址,存放在struct in_addr中----------------*/phostent=gethostbyname(m_server);//pop.163.comif(phostent!=NULL){// lpAddr=phostent->h_addr_list[0];memmove(&inaddr,phostent->h_addr_list[0],4);//220.181.12.101}else{m_error=CONNECTSERVER_ERROR;return 0;}/*---------------根据域名获取网络地址,存放在struct in_addr中----------------*/s=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);//SOCK_STREAM SOCK_DGRAMsock_addr.sin_family=AF_INET;sock_addr.sin_port=htons(m_port);sock_addr.sin_addr=inaddr;//直接结构体赋值给结构体,或者写成:sock_addr.sin_addr.s_addr=inaddr.S_un.S_addr;if(::connect(s,(struct sockaddr *)&sock_addr,sizeof(sock_addr))){m_error=CONNECT_ERROR;return 0;}return 1; }

手机能登录tplogin.cm吗
由题意,知道下底为5cm 那么上底比下底短1.5cm 上底为3.5cm 又有面积增加1.5平方厘米 则 高为2cm 原来的梯形面积S=(上底+下底)*高/2=(5+3.5)*2/2=8.5平方厘米

如何通过路由器访问光猫管理页面?
把路由器和光猫设置在不同ip下,连接网络后直接通过ip地址的形式访问,如路由器ip是192.168.0.1,那么直接在浏览器地址栏中输入对应的ip地址即可访问。访问路由器访问光猫
把路由器的IP改成192.168.1.X,X不为1或255就行,这样应该就可以直接连猫了。原因是路由器和光猫不在一个IP段。

本文由 在线网速测试 整理编辑,转载请注明出处。