VC++smtp发送邮件和附件模块要点

上传人:我*** 文档编号:129961527 上传时间:2020-04-24 格式:DOC 页数:12 大小:88KB
返回 下载 相关 举报
VC++smtp发送邮件和附件模块要点_第1页
第1页 / 共12页
VC++smtp发送邮件和附件模块要点_第2页
第2页 / 共12页
VC++smtp发送邮件和附件模块要点_第3页
第3页 / 共12页
VC++smtp发送邮件和附件模块要点_第4页
第4页 / 共12页
VC++smtp发送邮件和附件模块要点_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《VC++smtp发送邮件和附件模块要点》由会员分享,可在线阅读,更多相关《VC++smtp发送邮件和附件模块要点(12页珍藏版)》请在金锄头文库上搜索。

1、 C+发送邮件和附件 头文件cpp view plaincopy1 /* 2 *发送邮件模块头文件 3 *可以发送文本和附件(支持多个附件一起发送) 4 */ 5 #pragma once 6 struct sMailInfo /邮件信息 7 8 char* m_pcUserName;/用户登录邮箱的名称 9 char* m_pcUserPassWord;/用户登录邮箱的密码 10 char* m_pcSenderName;/用户发送时显示的名称 11 char* m_pcSender;/发送者的邮箱地址 12 char* m_pcReceiver;/接收者的邮箱地址 13 char* m_p

2、cTitle;/邮箱标题 14 char* m_pcBody;/邮件文本正文 15 char* m_pcIPAddr;/服务器的IP 16 char* m_pcIPName;/服务器的名称(IP与名称二选一,优先取名称) 17 sMailInfo()memset(this,0,sizeof(sMailInfo); 18 ; 19 class CSendMail 20 21 public: 22 CSendMail(void); 23 CSendMail(void); 24 25 public: 26 bool SendMail(sMailInfo &smailInfo);/发送邮件,需要在发送

3、的时候初始化邮件信息 27 void AddFilePath(char * pcFilePath);/添加附件的决定路径到附件列表中 28 void DeleteFilePath(char* pcFilePath);/删除附件路径,如果有的话 29 void DeleteAllPath(void);/删除全部附件的路径 30 31 protected: 32 void GetFileName(char* fileName,char* filePath);/从附件的路径中获取文件名称 33 void Char2Base64(char* pBuff64,char* pSrcBuff,int iLe

4、n);/把char类型转换成Base64类型 34 bool CReateSocket(SOCKET &sock);/建立socket连接 35 bool Logon(SOCKET &sock);/登录邮箱,主要进行发邮件前的准备工作 36 int GetFileData(char* FilePath);/由文件路径获取附件内容 37 38 bool SendHead(SOCKET &sock);/发送邮件头 39 bool SendTextBody(SOCKET &sock);/发送邮件文本正文 40 bool SendFileBody(SOCKET &sock);/发送邮件附件 41 bo

5、ol SendEnd(SOCKET &sock);/发送邮件结尾 42 protected: 43 CList m_pcFilePathList;/记录附件路径 44 45 char m_cSendBuff4096;/发送缓冲区 46 char m_cReceiveBuff1024; 47 char* m_pcFileBuff;/指向附件内容 48 sMailInfo m_sMailInfo; 49 ; 模块实现文件cpp view plaincopy50 /* 51 * 发送邮件模块 52 *可以发送文本和附件(支持多个附件一起发送) 53 *Date:2011-12-01 54 */ 55

6、 #include StdAfx.h 56 #include SendMail.h 57 #include winsock2.h 58 #pragma comment(lib,WSOCK32) 59 60 CSendMail:CSendMail(void) 61 62 m_pcFileBuff=NULL; 63 memset(m_cSendBuff,0,sizeof(m_cSendBuff); 64 memset(m_cReceiveBuff,0,sizeof(m_cReceiveBuff); 65 66 67 68 CSendMail:CSendMail(void) 69 70 Delete

7、AllPath(); 71 72 73 74 void CSendMail:Char2Base64(char* pBuff64,char* pSrcBuff,int iLen) 75 76 /1 1 1 1 1 1 1 1 77 / 分配给pBuff64 分配给pBuff64+1 78 / point所在的位置 79 static char Base64Encode = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/;/base64所映射的字符表 80 int point;/每一个源字符拆分的位置,可取2,4,6;初始为2 81 p

8、oint=2; 82 int i; 83 int iIndex;/base64字符的索引 84 char n=0;/上一个源字符的残留值 85 for(i=0;ipoint)&0x3f;/取得pSrcBuff的高point位 90 91 else if (point=4) 92 93 iIndex=(*pSrcBuff)point)&0xf;/取得pSrcBuff的高point位 94 95 else if(point=6) 96 97 iIndex=(*pSrcBuff)point)&0x3;/取得pSrcBuff的高point位 98 99 iIndex+=n;/与pSrcBuff-1的低

9、point结合组成Base64的索引 100 *pBuff64+=Base64EncodeiIndex;/由索引表得到pBuff64 101 n=(*pSrcBuff)(6-point);/计算源字符中的残留值 102 n=n&0x3f;/确保n的最高两位为0 103 point+=2;/源字符的拆分位置上升2 104 if(point=8)/如果拆分位置为8说明pSrcBuff有6位残留,可以组成一个完整的Base64字符,所以直接再组合一次 105 106 iIndex=(*pSrcBuff)&0x3f;/提取低6位,这就是索引了 107 *pBuff64+=Base64EncodeiIn

10、dex;/ 108 n=0;/残留值为0 109 point=2;/拆分位置设为2 110 111 pSrcBuff+; 112 113 114 if(n!=0) 115 116 *pBuff64+=Base64Encoden; 117 118 if(iLen%3=2)/如果源字符串长度不是3的倍数要用=补全 119 120 *pBuff64=; 121 122 else if(iLen%3=1) 123 124 *pBuff64+=; 125 *pBuff64=; 126 127 128 129 void CSendMail:AddFilePath(char * pcFilePath)/添加

11、附件路径 130 131 if(pcFilePath=NULL) 132 133 return; 134 135 int i; 136 char* temp; 137 for(i=0;im_pcFilePathList.GetCount();i+) 138 139 temp=m_pcFilePathList.GetAt(m_pcFilePathList.FindIndex(i); 140 if(strcmp(pcFilePath,temp)=0)/如果已经存在就不用再添加了 141 142 return; 143 144 145 m_pcFilePathList.AddTail(pcFilePath); 146 147 148 void CSendMail:DeleteFilePath(char* pcFilePath)/删除附件路径 1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 事务文书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号