⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smtpsocket.h

📁 DarkATLSmtp(SMTP COM 组件原创代码),注册后可在Delphi中发邮件。
💻 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 + -