Smtp邮件发送程序剖析

Smtp邮件发送程序剖析

ID:37713601

大小:42.38 KB

页数:13页

时间:2019-05-29

Smtp邮件发送程序剖析_第1页
Smtp邮件发送程序剖析_第2页
Smtp邮件发送程序剖析_第3页
Smtp邮件发送程序剖析_第4页
Smtp邮件发送程序剖析_第5页
资源描述:

《Smtp邮件发送程序剖析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SMTP邮件发送剖析封装之后的类如下://MySmtp.cpp:implementationoftheMySmtpclass.////////////////////////////////////////////////////////////////////////#include"stdafx.h"#include"MailExam.h"#include"MySmtp.h"#include"ZBase64.h"#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE

2、[]=__FILE__;#definenewDEBUG_NEW#endif#defineCOPYRIGHT"SmtpClient"//版权信息#defineBOUNDARY"www.hust.edu.cn"//边界字符串////////////////////////////////////////////////////////////////////////Construction/Destruction//////////////////////////////////////////////////

3、////////////////////MySmtp::MySmtp(){}MySmtp::~MySmtp(){}boolMySmtp::CreateSocket()//创建一个Socket{if(WSAStartup(0x0101,&m_WSADATA)!=0)//至此socket版本是2.2,第一个参数也可以是MAKEWORD(2,2){ReleaseSocket();returnfalse;//创建失败}if((m_SOCKET=socket(AF_INET,SOCK_STREAM,0))==INVA

4、LID_SOCKET){ReleaseSocket();returnfalse;}returntrue;}//通过和比较码比较来发现是否响应成功boolMySmtp::CheckResponse(constchar*RecvCode){//将收到的和对应的码字比较,判断是否发生错误charbuf[1024]={0};if(recv(m_SOCKET,buf,1024,0)==SOCKET_ERROR)returnfalse;else{returnbuf[0]==RecvCode[0]&&buf[1]==Re

5、cvCode[1]&&buf[2]==RecvCode[2]?true:false;}}boolMySmtp::Connect(conststringSmtpAddr,constintPort){if(!CreateSocket())returnfalse;//得到主机(要发送给的SMTP地址如smtp.sina.com.cn)地址,并将相应的信息写入m_HOSTENT,//就是在那个字符串中查找到相应信息并且构造一个结构体HOSTENT(这个记录了很多信息,不仅仅是地址)if((m_HOSTENT=get

6、hostbyname((SmtpAddr.c_str())))==NULL)//将传入的主机参数给m_HOSTENTreturnfalse;//AfxMessageBox(m_HOSTENT->h_name);//调试用的,找到HOSTENT的结构内容//AfxMessageBox(*m_HOSTENT->h_aliases);if(m_HOSTENT->h_addr_list[0]==NULL)//地址列表为空{ReleaseSocket();returnfalse;}//AfxMessageBox(m_

7、HOSTENT->h_addr_list[0]);//AfxMessageBox(m_HOSTENT->h_addr_list[1]);memset(&m_SOCKADDR_IN,0,sizeof(m_SOCKADDR_IN));//将这个SOCKET和主机地址联系起来,其实WinSoket中,m_HOSTENT和m_SOCKADDR_IN都是表示的主机地址,也就是目的地的地址//m_SOCKADDR_IN.sin_family=AF_INET;m_SOCKADDR_IN.sin_addr.S_un.S_a

8、ddr=*(ULONG*)m_HOSTENT->h_addr_list[0];m_SOCKADDR_IN.sin_port=htons(Port);//u_longtmp=*(ULONG*)m_HOSTENT->h_addr_list[0];//charnewstring[30];//sprintf(newstring,"%d",tmp);//AfxMessageBox(newstring);//进行连接if(c

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。