版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简单邮件传输协议SMTP封装类 在Internet上,Email是最流行的传输媒体。这篇文章包括两个协议:. POP 3 协议: POP3协议(邮政传输协议)就是指从Email服务器接收信件。我已经提交了一个封装POP3协议的类。该协议官方的描述你可查阅RFC1225。 SMTP协议: SMTP (简单邮件传输协议) 指发送邮件到它的目的地。 有关SMTP 协议的细节你可参考RCF 821 .我最新地贡献是封装了SMTP协议。我不能完全实现 SMTP协议但你可用它在许多应用场合发送邮件。该类有若干方法,我选方法名同SMTP命令, 所以你很容易理解。 在该类中,我再一次使用了CSocket作为类
2、成员,所以我能在线程中使用它. 下面是该类的编码及注释: / SMTP.h: interface for the CSMTP class./#if !defined(AFX_SMTP_H_617F7E82_7F4D_11D1_88A0_00001C302581_INCLUDED_)#define AFX_SMTP_H_617F7E82_7F4D_11D1_88A0_00001C302581_INCLUDED_#if _MSC_VER >= 1000#pragma once#endif / _MSC_VER >= 1000#define CONNECTION_CHECK 0#defi
3、ne HELLO_CHECK 1#define MAIL_CHECK 2#define RCPT_CHECK 3#define DATA_START_CHECK 4#define DATA_END_CHECK 5#define QUIT_CHECK 6#define DATA_CHECK 7class CSMTP public:BOOL Mail(); / CString GetErrorMessage();BOOL Data(CString Subject, CString Body);CString GetTo();BOOL SetTo(CString to);CString GetFro
4、m();void SetFrom(CString from);BOOL Mail(CString from);BOOL Disconnect();CString GetHost();void SetHost(CString Host);BOOL Connect(CString Host, CString Me);BOOL Connect();CSMTP();virtual CSMTP();private:CString GetError(CString Response);CString m_ErrorMessage;BOOL CheckResponse(int Type);int m_NoO
5、fTo;CStringArray m_To;CString m_From;CSocket m_SMTPServer;CString m_Host; ;#endif / !defined(AFX_SMTP_H_617F7E82_7F4D_11D1_88A0_00001C302581_INCLUDED_)/ SMTP.cpp: implementation of the CSMTP class./#include "stdafx.h"#include "MailSend.h"#include "SMTP.h"#ifdef _DEBUG#u
6、ndef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/CSMTP:CSMTP()m_NoOfTo = 0;m_SMTPServer.Create();CSMTP:CSMTP()m_SMTPServer.Close();/ Connect to the SMTP ServerBOOL CSMTP:Connect()return Connect(m_Host,m_From);/ Connect to the SMTP ServerBOOL CSMTP:Conn
7、ect(CString Host,CString From)if (!m_SMTPServer.Connect(Host,25) / 25 for SMTP Portm_ErrorMessage = _T("Server cannot be connected");return FALSE;elseif(CheckResponse(CONNECTION_CHECK)=FALSE)return FALSE;char buf 512;wsprintf (buf, "HELO %srn", (LPCSTR) From);m_SMTPServer.Send(bu
8、f, strlen (buf); if (CheckResponse(HELLO_CHECK)=FALSE)return FALSE;else return TRUE; return TRUE;/ Setting the Host Stringvoid CSMTP:SetHost(CString Host)m_Host = Host;/ Returing the Host StringCString CSMTP:GetHost()return m_Host;/ 发送"QUIT"命令到SMTP服务器:BOOL CSMTP:Disconnect()char buf256;wsp
9、rintf (buf, "QUIT rn");m_SMTPServer.Send(buf, strlen (buf); if (CheckResponse(QUIT_CHECK)=FALSE)return FALSE;else return TRUE;/ 发送"MAIL" 命令到SMTP服务器:BOOL CSMTP:Mail(CString from)char buf256;wsprintf (buf, "MAIL From:<%s>rn", (LPCSTR) from);m_SMTPServer.Send(buf, st
10、rlen (buf); if (CheckResponse(MAIL_CHECK)=FALSE)return FALSE;else return TRUE; / Setting the From stringvoid CSMTP:SetFrom(CString from)m_From = from;/ Returing the From stringCString CSMTP:GetFrom()return m_From;/ Setting the TO stringBOOL CSMTP:SetTo(CString to)char buf256;m_To.Add(to); / Saving v
11、ale of towsprintf (buf, "RCPT TO:<%s>rn", (LPCSTR) to);m_SMTPServer.Send(buf, strlen (buf); if (CheckResponse(RCPT_CHECK)=FALSE)return FALSE;else return TRUE; / Returing the TO stringCString CSMTP:GetTo() if(m_To.GetSize()>=m_NoOfTo)m_NoOfTo+;return m_Tom_NoOfTo-1;elsereturn _T(&q
12、uot;No more To available");/ 发送"DATA" 命令到 SMTP 服务器:BOOL CSMTP:Data(CString Subject, CString Body)char buf256;wsprintf (buf, "DATArn");m_SMTPServer.Send(buf, strlen (buf); if (CheckResponse(DATA_CHECK)=FALSE)return FALSE;else wsprintf (buf, "SUBJECT:%srn", (LPCSTR)
13、Subject);m_SMTPServer.Send(buf, strlen (buf); wsprintf (buf, "%srn", (LPCSTR) Body);m_SMTPServer.Send(buf, strlen (buf); wsprintf (buf, ".rn");m_SMTPServer.Send(buf, strlen (buf); return TRUE;/本方法检查服务器的响应: BOOL CSMTP:CheckResponse(int Type)char buf 1000;char temp3;for (int i=0;i
14、< 512;i+)bufi='0'/从服务器接收数据m_SMTPServer.Receive(buf, sizeof(buf);strncpy(temp,buf,3);int temp2 = atoi(temp);switch (Type)case CONNECTION_CHECK:if (temp2 != 220)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;case HELLO_CHECK:if (temp2 != 250)m_ErrorMessage = GetError(LPCTSTR)buf
15、);return FALSE; break;case MAIL_CHECK:if (temp2 != 250)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;case RCPT_CHECK:if (temp2 != 250)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;case DATA_START_CHECK:if (temp2 != 354)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; br
16、eak;case DATA_END_CHECK:if (temp2 != 250)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;case QUIT_CHECK:if (temp2 != 221)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;case DATA_CHECK:if (temp2 != 354)m_ErrorMessage = GetError(LPCTSTR)buf);return FALSE; break;return TRUE;/ 返回
17、错误消息CString CSMTP:GetErrorMessage()return m_ErrorMessage;/ 按照错误号准备错误信息CString CSMTP:GetError(CString Response)if(Response.Find("211")return _T("System status or system help reply");if(Response.Find("214")return _T("Help Message");if(Response.Find("220&quo
18、t;)return _T("Service is ready");if(Response.Find("221")return _T("Service closing transmission channel");if(Response.Find("250")return _T("Requested mail action okay, completed");if(Response.Find("251")return _T("user not local: will forward to forward path");if(Response.Find("354")return _T("Start mail input; end with .");return _T("No Error Number is matched with ")+Response;/ Just over
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第九册表格语文教案
- 部编本二年级上册语文第四至六单元(内容含课文口语交际及语文园地)全部教案
- 《卖火柴的小女孩》教案设计-教案教学设计
- 《扎染工艺设计》教案
- 武汉市攀岩馆租赁合同
- 医疗新技术项目评估指标
- 人教版小学语文六年级上册教案
- 农村改造鱼塘施工合同样本
- 塑料机械库存管理要点
- 畜牧屠宰市场营销
- 第5课《秋天的怀念》群文教学设计 统编版语文七年级上册
- 二年级家长会语文老师课件
- 冬季安全生产特点及预防措施
- 视频短片制作合同范本
- 结构加固改造之整体结构加固教学课件
- 高中数学-3.3 幂函数教学课件设计
- 抑郁症与睡眠障碍课件
- 创新思维与创业实验-东南大学中国大学mooc课后章节答案期末考试题库2023年
- 第九讲 全面依法治国PPT习概论2023优化版教学课件
- 内部控制学李晓慧课后参考答案
- 历史(心得)之在历史教学中培养学生生态环境意识
评论
0/150
提交评论