www.pudn.com > smtpemail.zip > SMTP.h
// SMTP.h: interface for the CSMTP class. // Copyright (c) 1998, Wes Clyburn ////////////////////////////////////////////////////////////////////// #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#include "MailMessage.h" #define SMTP_PORT 25 // Standard port for SMTP servers #define RESPONSE_BUFFER_SIZE 1024 class CSMTP { public: CSMTP( LPCTSTR szSMTPServerName, UINT nPort = SMTP_PORT ); virtual ~CSMTP(); void SetServerProperties( LPCTSTR sServerHostName, UINT nPort = SMTP_PORT ); CString GetLastError(); CString GetMailerName(); UINT GetPort(); BOOL Disconnect(); BOOL Connect(); virtual BOOL FormatMailMessage( CMailMessage* msg ); BOOL SendMessage( CMailMessage* msg ); CString GetServerHostName(); private: BOOL get_response( UINT response_expected ); BOOL transmit_message( CMailMessage* msg ); CString prepare_body( CMailMessage* msg ); BOOL prepare_header( CMailMessage* msg); CString m_sError; BOOL m_bConnected; UINT m_nPort; CString m_sMailerName; CString m_sSMTPServerHostName; CSocket m_wsSMTPServer; protected: // // Helper Code // struct response_code { UINT nResponse; // Response we're looking for TCHAR* sMessage; // Error message if we don't get it }; enum eResponse { GENERIC_SUCCESS = 0, CONNECT_SUCCESS, DATA_SUCCESS, QUIT_SUCCESS, // Include any others here LAST_RESPONSE // Do not add entries past this one }; TCHAR response_buf[ RESPONSE_BUFFER_SIZE ]; static response_code response_table[]; }; #endif // !defined(AFX_SMTP_H__55DE48CB_BEA4_11D1_870E_444553540000__INCLUDED_)