bin.hu@lead.cn.邮件怎么mail 发送邮件收到bin

购买咨询:400-000-1631
购买咨询:400-000-1631
购买咨询:400-000-1631
购买咨询:400-000-1631
购买咨询:400-000-1631
我们为客户提供最安全、稳定、高效的邮件产品及服务
自建系统,数据自主管理,无缝协同其他办公系统
租用安全邮箱,无须软硬件投资,即买即开通使用
我们为客户准备了丰富的行业邮箱解决方案
电子政务已经趋向于多元化,盈世Coremail为政府单位提供安全、高效的邮件服务器部署方案,满足电子政务对邮...
中国高校前100强中60%采用用盈世Coremail进行邮件服务器部署,它可灵活满足教师邮箱、校友邮箱等各种教育...
业内唯一获得国家双重安全认证的邮件系统,结合邮件投递系统、邮件归档系统等,全方位满足银行、证券、保险等...
盈世Coremail邮件系统和企业邮箱,凭借安全稳定的优势获得国内众多知名企业客户的信赖,如宝钢、南方电网、...
我们用自己的努力换来客户对我们的信赖与支持
我们认为Coremail邮件系统是十分成熟的产品,值得我们信赖。无论在相应速度,安全稳定上都表现的不...
Coremail邮件系统能稳定高效运行,系统响应能力在各邮件系统中名列前茅。非凡的系统处理能力,有效...
我们选择Coremail邮件系统基于三条理由:可靠、效率高、可扩展性强。专业技术人员可以配合我们,提出...
Coremail邮件系统稳定、可靠、服务成功率高。界面友好、WEBMAIL功能丰富;系统扩容方便、灵活;防垃圾邮...
盈世Coremail企业邮箱运行稳定,有效地提高了我们的工作效率...
Coremail是一套符合国内企业实情的电子邮件系统,高效稳定、维护量小、反垃圾效果也不错...
& & 4月28日,“FutureoCoremail&网易互联网+智能办公领袖峰会”在杭州举行。2017年网易与Coremail论客将合力...
& &&4月10日至13日,由ICANN UASG举办的国际化邮件地址(EAI)研究会在美国华盛顿雷德蒙德举行。会上聚集了...
& & 继广州、北京站相继打响后, Coremail论客合作伙伴大会全国巡展上海站4月14日在上海外滩浦华大酒店隆重举行...
& & 中国互联网历经20多年飞速发展,给人们生活带来了巨变,涌现了一批优秀的互联网人,他们在经济社会的各个领域...
& & 在这个全球信息化的时代,校园邮箱作为高校信息化建设的一个重要产品,肩负着实现信息化建设的责任。Corema...
Coremail 版权所有 (C)
售前:400-000-1631
售后:400-888-2488VC++ 发送邮件封装类CSendMail,测试可用,有需要的朋友可以参考下。
地址:http://blog.csdn.net/hujkay
作者:Jekkay Hu()
关键词:SMTP, 发送邮件,C++,封装类,MFC
原文地址:http://blog.csdn.net/ybjx111/article/details/7031055
/***********************************************************************
*发送邮件模块头文件
*可以发送文本和附件(支持多个附件一起发送)
*************************************************************************/
#pragma once
struct sMailInfo //邮件信息
char* m_pcUserN//用户登录邮箱的名称
char* m_pcUserPassW//用户登录邮箱的密码
char* m_pcSenderN//用户发送时显示的名称
char* m_pcS//发送者的邮箱地址
char* m_pcR//接收者的邮箱地址
char* m_pcT//邮箱标题
char* m_pcB//邮件文本正文
char* m_pcIPA//服务器的IP
char* m_pcIPN//服务器的名称(IP与名称二选一,优先取名称)
sMailInfo(){memset(this,0,sizeof(sMailInfo));}
class CSendMail
CSendMail(void);
~CSendMail(void);
bool SendMail(sMailInfo &smailInfo);//发送邮件,需要在发送的时候初始化邮件信息
void AddFilePath(char * pcFilePath);//添加附件的决定路径到附件列表中
void DeleteFilePath(char* pcFilePath);//删除附件路径,如果有的话
void DeleteAllPath(void);//删除全部附件的路径
protected:
void GetFileName(char* fileName,char* filePath);//从附件的路径中获取文件名称
void Char2Base64(char* pBuff64,char* pSrcBuff,int iLen);//把char类型转换成Base64类型
CReateSocket(SOCKET &sock);//建立socket连接
bool Logon(SOCKET &sock);//登录邮箱,主要进行发邮件前的准备工作
int GetFileData(char* FilePath);//由文件路径获取附件内容
bool SendHead(SOCKET &sock);//发送邮件头
bool SendTextBody(SOCKET &sock);//发送邮件文本正文
bool SendFileBody(SOCKET &sock);//发送邮件附件
bool SendEnd(SOCKET &sock);//发送邮件结尾
protected:
CList&char*,char*& m_pcFilePathL//记录附件路径
m_cSendBuff[4096];//发送缓冲区
m_cReceiveBuff[1024];
char* m_pcFileB//指向附件内容
sMailInfo m_sMailI
/************************************************************************
* 发送邮件模块
*可以发送文本和附件(支持多个附件一起发送)
************************************************************************/
#include &StdAfx.h&
#include &SendMail.h&
#include &winsock2.h&
#pragma comment(lib,&WSOCK32&)
CSendMail::CSendMail(void)
m_pcFileBuff=NULL;
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
memset(m_cReceiveBuff,0,sizeof(m_cReceiveBuff));
CSendMail::~CSendMail(void)
DeleteAllPath();
void CSendMail::Char2Base64(char* pBuff64,char* pSrcBuff,int iLen)
// 分配给pBuff64
↑ 分配给pBuff64+1
point所在的位置
static char Base64Encode[] = &ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/&;//base64所映射的字符表
//每一个源字符拆分的位置,可取2,4,6;初始为2
int iI//base64字符的索引
char n=0;//上一个源字符的残留值
for(i=0;i&iLi++)
if(point==2)
iIndex=((*pSrcBuff)&&point)&0x3f;//取得pSrcBuff的高point位
else if (point==4)
iIndex=((*pSrcBuff)&&point)&0//取得pSrcBuff的高point位
else if(point==6)
iIndex=((*pSrcBuff)&&point)&0x3;//取得pSrcBuff的高point位
iIndex+=n;//与pSrcBuff-1的低point结合组成Base64的索引
*pBuff64++=Base64Encode[iIndex];//由索引表得到pBuff64
n=((*pSrcBuff)&&(6-point));//计算源字符中的残留值
n=n&0x3f;//确保n的最高两位为0
point+=2;//源字符的拆分位置上升2
if(point==8)//如果拆分位置为8说明pSrcBuff有6位残留,可以组成一个完整的Base64字符,所以直接再组合一次
iIndex=(*pSrcBuff)&0x3f;//提取低6位,这就是索引了
*pBuff64++=Base64Encode[iIndex];//
n=0;//残留值为0
point=2;//拆分位置设为2
pSrcBuff++;
*pBuff64++=Base64Encode[n];
if(iLen%3==2)//如果源字符串长度不是3的倍数要用'='补全
*pBuff64='=';
else if(iLen%3==1)
*pBuff64++='=';
*pBuff64='=';
void CSendMail::AddFilePath(char * pcFilePath)//添加附件路径
if(pcFilePath==NULL)
for(i=0;i&m_pcFilePathList.GetCount();i++)
temp=m_pcFilePathList.GetAt(m_pcFilePathList.FindIndex(i));
if(strcmp(pcFilePath,temp)==0)//如果已经存在就不用再添加了
m_pcFilePathList.AddTail(pcFilePath);
void CSendMail::DeleteFilePath(char* pcFilePath)//删除附件路径
for(i=0;i&m_pcFilePathList.GetCount();i++)
temp=m_pcFilePathList.GetAt(m_pcFilePathList.FindIndex(i));
if(strcmp(temp,pcFilePath)==0)//找到并删除它,如果没找到就算了
m_pcFilePathList.RemoveAt(m_pcFilePathList.FindIndex(i));
void CSendMail::DeleteAllPath(void)
m_pcFilePathList.RemoveAll();
int CSendMail::GetFileData(char* FilePath)
m_pcFileBuff=NULL;
if(FilePath==NULL)
USES_CONVERSION;
if(!f.Open(A2W(FilePath),CFile::modeRead|CFile::modeNoTruncate|CFile::typeBinary))
len=(int)f.GetLength();
m_pcFileBuff=new char[len+1];
memset(m_pcFileBuff,0,len+1);
f.Read(m_pcFileBuff,len);
f.Close();
void CSendMail::GetFileName(char* fileName,char* filePath)
if(filePath==NULL || fileName==NULL)
for(i=0;i&(int)strlen(filePath);i++)
if(filePath[strlen(filePath)-1-i]=='//')
memcpy(fileName,&filePath[strlen(filePath)-i],i);
bool CSendMail::CReateSocket(SOCKET &sock)
WORD wVersionR
WSADATA wsaD
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
WSACleanup( );
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if (sock == INVALID_SOCKET)
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地址
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)
bool CSendMail::Logon(SOCKET &sock)
recv(sock,m_cReceiveBuff,1024,0);
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&HELO []/r/n&);
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')
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&AUTH LOGIN/r/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')
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')
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')
//登录成功
bool CSendMail::SendHead(SOCKET &sock)
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&MAIL FROM:&%s&/r/n&,m_sMailInfo.m_pcSender);
rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
if(rt!=strlen(m_cSendBuff))
recv(sock,m_cReceiveBuff,1024,0);
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&RCPT TO:&%s&/r/n&,m_sMailInfo.m_pcReceiver);
rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
if(rt!=strlen(m_cSendBuff))
recv(sock,m_cReceiveBuff,1024,0);
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
memcpy(m_cSendBuff,&DATA/r/n&,strlen(&DATA/r/n&));
rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
if(rt!=strlen(m_cSendBuff))
recv(sock,m_cReceiveBuff,1024,0);
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&From:/&%s/&&%s&/r/n&,m_sMailInfo.m_pcSenderName,m_sMailInfo.m_pcSender);
sprintf_s(&m_cSendBuff[strlen(m_cSendBuff)],150,&To:/&.CN/&&%s&/r/n&,m_sMailInfo.m_pcReceiver);
sprintf_s(&m_cSendBuff[strlen(m_cSendBuff)],150,&Subject:%s/r/nMime-Version: 1.0/r/nContent-Type: multipart/
boundary=/&INVT/&/r/n/r/n&,m_sMailInfo.m_pcTitle);
rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
if(rt!=strlen(m_cSendBuff))
bool CSendMail::SendTextBody(SOCKET &sock)
memset(m_cSendBuff,0,sizeof(m_cSendBuff));
sprintf_s(m_cSendBuff,&--INVT/r/nContent-Type: text//r/n
charset=/&gb2312/&/r/n/r/n%s/r/n/r/n&,m_sMailInfo.m_pcBody);
rt=send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
if(rt!=strlen(m_cSendBuff))
bool CSendMail::SendFileBody(SOCKET &sock)
char* fileP
char fileName[128];
for(i=0;i&m_pcFilePathList.GetCount();i++)
memset(fileName,0,128);
filePath=m_pcFilePathList.GetAt(m_pcFilePathList.FindIndex(i));
len=GetFileData(filePath);
GetFileName(fileName,filePath);
sprintf_s(m_cSendBuff,&--INVT/r/nContent-Type: application/octet-/r/n
name=/&%s/&/r/nContent-Transfer-Encoding: base64/r/nContent-Disposition:/r/n
filename=/&%s/&/r/n/r/n&,fileName,fileName);
send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
while (pt&len)
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))
if(len!=0)
delete [] m_pcFileB
bool CSendMail::SendEnd(SOCKET &sock)
sprintf_s(m_cSendBuff,&--INVT--/r/n./r/n&);
send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
sprintf_s(m_cSendBuff,&QUIT/r/n&);
send(sock,m_cSendBuff,strlen(m_cSendBuff),0);
closesocket(sock);
WSACleanup();
bool CSendMail::SendMail(sMailInfo &smailInfo)
memcpy(&m_sMailInfo,&smailInfo,sizeof(smailInfo));
if(m_sMailInfo.m_pcBody==NULL
|| m_sMailInfo.m_pcIPAddr==NULL
|| m_sMailInfo.m_pcIPName==NULL
|| m_sMailInfo.m_pcReceiver==NULL
|| m_sMailInfo.m_pcSender==NULL
|| m_sMailInfo.m_pcSenderName==NULL
|| m_sMailInfo.m_pcTitle==NULL
|| m_sMailInfo.m_pcUserName==NULL
|| m_sMailInfo.m_pcUserPassWord==NULL)
if(!CReateSocket(sock))//建立连接
if(!Logon(sock))//登录邮箱
if(!SendHead(sock))//发送邮件头
if(!SendTextBody(sock))//发送邮件文本部分
if(!SendFileBody(sock))//发送附件
if(!SendEnd(sock))//结束邮件,并关闭sock
如何使用MFC编写自定义UI界面【附高仿QQ 2014登陆界面范例程序】
http://blog.csdn.net/hujkay/article/details/
Jekkay Hu, 胡杨
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 串口发送bin文件 的文章

 

随机推荐