📄 smtp.h
字号:
// SMTP.h: interface for the CSMTP class.
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SMTP_H__55DE48CB_BEA4_11D1_870E_444553540000__INCLUDED_)
#define AFX_SMTP_H__55DE48CB_BEA4_11D1_870E_444553540000__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <afxsock.h>
#include "MailMessage.h"
// SMTP服务器标准端口号
#define SMTP_PORT 25
// 定义接收缓冲区大小
#define RESPONSE_BUFFER_SIZE 1024
class CSMTP
{
public:
CSMTP( LPCTSTR szSMTPServerName, UINT nPort = SMTP_PORT );
virtual ~CSMTP();
// 记录服务器属性的接口
void SetServerProperties( LPCTSTR szSMTPServerName, UINT nPort = SMTP_PORT );
CString GetLastError();
UINT GetPort();
// 与服务器的联系函数
BOOL Disconnect();
BOOL Connect();
// 解释收到的回应信息
virtual BOOL FormatMailMessage( CMailMessage* msg );
BOOL SendMessage( CMailMessage* msg );
CString GetServerHostName();
// 连接是阻塞式的,因此要提供取消通信的方法
void Cancel();
private:
// 处理获得的回应信息
BOOL get_response( UINT response_expected );
// 处理邮件正文
CString cook_body( CMailMessage* msg );
CString m_sError;
BOOL m_bConnected;
UINT m_nPort;
CString m_sSMTPServerHostName;
// 与SMTP服务器通信的套接字
CSocket m_wsSMTPServer;
protected:
// 发送邮件消息
virtual BOOL transmit_message( CMailMessage* msg );
struct response_code
{
// 如果没有得到回应信息,则给出出错信息
UINT nResponse;
TCHAR* sMessage;
};
enum eResponse
{
GENERIC_SUCCESS = 0,
CONNECT_SUCCESS,
DATA_SUCCESS,
QUIT_SUCCESS,
// 本例只考虑到上述几种回应消息
// LAST_RESPONSE是最后一个元素
LAST_RESPONSE
};
TCHAR *response_buf;
static response_code response_table[];
};
#endif // !defined(AFX_SMTP_H__55DE48CB_BEA4_11D1_870E_444553540000__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -