📄 smtpsocket.h
字号:
// SmtpSocket.h: interface for the CSmtpSocket class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SMTPSOCKET_H__0FF3295D_DFAF_478E_8377_D5E13B0C3B54__INCLUDED_)
#define AFX_SMTPSOCKET_H__0FF3295D_DFAF_478E_8377_D5E13B0C3B54__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "DPSocketModel.h"
#include "DakComPtrList.h"
#define KEY_COMMAND_BOUNDARY "\r\n.\r\n"
#define KEY_HEADER_BOUNDARY "\r\n\r\n"
#define KEY_LINE_BOUNDARY "\r\n"
#define KEY_POP_OK "+OK"
#define VALUE_DEF_NEWSECTALLOCSIZE 32000
#define N_DEF_MSGIDLENGTH 20
typedef struct _tagADDRINFO
{
CString strStringAddr;
CString strStringName;
}TAG_ADDRINFO,*LPTAG_ADDRINFO;
#define HANDLE_ERROR \
LPVOID lpMsgBuf; \
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, \
NULL, ::GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), \
(LPTSTR) &lpMsgBuf, 0, NULL ); \
\
CComBSTR bstrError = (char*)lpMsgBuf;\
LocalFree( lpMsgBuf );
typedef struct _BUFFER
{
PBYTE pBuf;
DWORD cLen;
} BUFFER;
class CSmtpMessage
{
public:
CDakComPtrList* m_pArrTo; //目的地址
CDakComPtrList* m_pArrReplyTo; //回复地址
CDakComPtrList* m_pArrCC; //抄送地址
CDakComPtrList* m_pArrBCC; //密文抄送地址
CDakComPtrList* m_pArrAttachment; //附件数组
CString m_strFrom; //发送用户MAIL地址
CString m_strFromName; //发送用户名称
CString m_strBody; //正文
CString m_strSubject; //标题
BOOL m_bHTML; //正文是否为HTML格式
};
class CDakComPtrList;
class CSmtpSocket : public CDPSocketModel
{
public:
CSmtpSocket();
virtual ~CSmtpSocket();
BOOL Connect(LPCTSTR pszHostName, LPCTSTR pszUser,
LPCTSTR pszPassword, int nPort,
int nProxyType,BOOL bProxyNeedAuth,
LPCTSTR pszProxyUserName,LPCTSTR pszProxyPassWord,
LPCTSTR pszProxyHostName,int nProxyPort,
CString& strErrorText);
BOOL Disconnect(void);
DWORD GetTimeout(void) const { return m_dwTimeout; };
void SetTimeout(DWORD dwTimeout) { m_dwTimeout = dwTimeout; };
CString GetLastCommandResponse(void) const
{ return m_strLastCommandResponse; };
BOOL SendMail(CSmtpMessage& message);
protected:
BOOL ReadResponse(LPSTR pszBuffer, int nInitialBufSize, LPSTR pszTerminator, LPSTR* ppszOverFlowBuffer, int nGrowBy=4096);
BOOL ReadCommandResponse(void);
static const int pr2six[];
static char six2pr[];
static PBYTE BufferQueryPtr( BUFFER * pB ) { return pB->pBuf; }
static void ExtractFileName(CString Path, char * pFileName );
static void ExtractContentType(CString Path, char * pContentType );
static BOOL ReadAndEncodeFile(CString Path, char** pRetVal,long& nRetSize);
static BOOL UUEncode( BYTE * bufin, DWORD nbytes, BUFFER * pbuffEncoded );
static BOOL BufferResize( BUFFER *pB, DWORD cNewL ) ;
static CString EncodeByGB2312(CString strContent);
static CString UUEncodeString(CString strString);
private:
SOCKET m_hSocket;
BOOL m_bConnected;
CString m_strLastCommandResponse;
DWORD m_dwTimeout;
CString m_strAbout;
};
#endif // !defined(AFX_SMTPSOCKET_H__0FF3295D_DFAF_478E_8377_D5E13B0C3B54__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -