资源简介
SMTP邮件发送客户端.rar

代码片段和文件信息
#include
#include
#include
#include
#pragma comment(lib“ws2_32.lib“)
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*dbufchar*buf128int len);
void SendMail(char*emailchar*body);
int OpenSocket(struct sockaddr *addr);
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* dbufchar* buf128int len)
{
struct base64Date6* ddd =NULL;
int i =0;
char buf[256]={0};
char* tmp =NULL;
char cc =‘\0‘;
memset(buf0256);
strcpy_s(buf256buf128);
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* emailchar* bodychar *source)
{
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(22)&WSAData);
memset(&their_addr0sizeof(their_addr));
their_addr.sin_family =AF_INET;
their_addr.sin_port =htons(25);
hostent*hptr =gethostbyname(“smtp.sina.com“);
memcpy(&their_addr.sin_addr.S_un.S_addrhptr->h_addr_list[0]hptr->h_length);
printf(“IP of smpt.smtp.com is : %d:%d:%d:%d\n“
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(rbuf01500);
while(recv(sockfdrbuf15000)==0)
{
cout<<“reconnect...“< Sleep(2);
sockfd =OpenSocket((struct sockaddr *)&their_addr);
memset(rbuf01500);
}
cout<
// EHLO
memset(buf01500);
sprintf_s(buf1500“EHLO HYL-PC\r\n“);
send(sockfdbufs
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11197 2013-11-11 10:49 SMTP邮件发送客户端\SMTP邮件发送.cpp
文件 139 2013-11-11 10:52 SMTP邮件发送客户端\说明.txt
目录 0 2013-11-11 10:50 SMTP邮件发送客户端
----------- --------- ---------- ----- ----
11336 3
相关资源
- 可以在XE下使用的DosCommand,捕获控制
- 如何使用VC和OD调试OCX控件
- 计算机三级-网络技术-第4大题题库-共
- 雷柏v700s机械键盘驱动 v1.0.0.1 官方版
- weui手机商城模板在线
- BMA250手册word和PDF(博文配到资源)
- Delphi时钟助手源码,定时关机、提醒
- Cisco无线AP全部配置文件(AIR-1200系列
- 安卓手机PC端一键重启工具
- ManualIciMapping_v3.1
- 集客9341固件ap
- 遍历USB设备,获取USB序列号
- delphi源码-实现软件注册机
- Microservices_Designing_Deploying
-
Design for em
bedded Image Processing on FPG - GNU/Linux系统开发者需要从桌面突破
- Concurrency in Go(EarlyRelease) 无水印p
- cfx中ccl语言使用手册
- 单元测试一条龙1.50final
- 金丰300T级进冲床电气控制原理图1
- DSP实验(10次实验有详细步骤)
- HP Compaq 8200 Elite 系列商用台式机
- 2019年软考高级下半年信息系统项目管
- Assembly Language for x86 Processors (7th Ed
- Mule基础教程中文版
- 易语言凡哥记事本V1源码易语言凡哥记
- 易语言码表文本加解密模块源码
- DIR2病毒源代码(汇编语言编写)
- ADC0809的采样控制电路的实现.doc
- CRichEditView显示行号的代码
评论
共有 条评论