SmtpSendManger.h
上传用户:weimei12
上传日期:2022-08-11
资源大小:185k
文件大小:5k
源码类别:

Email客户端

开发平台:

Visual C++

  1. #pragma once
  2. /********************************************************************
  3. created: 2008:9:26   13:40
  4. author: 李欣
  5. filename: c:MyProjectSimpleMailSimpleMailSmtpSendManger.h
  6. classname:  CSendManger
  7. purpose: implement the smtp protocol to send the mail
  8. *********************************************************************/
  9. class CSmtpSendManger
  10. {
  11. public:
  12. CSmtpSendManger(void);
  13. public:
  14. ~CSmtpSendManger(void);
  15. ///<summary>
  16. ///   send the mail
  17. ///</summary>
  18. HRESULT SendMailMessage(IN const CString& strRcs, 
  19. IN const CString& strCCRcs,
  20. IN const CString& strBCCRcs,
  21. IN const CString& strSubject, 
  22. IN const CString& strContent,
  23. IN const CStringArray& strAttachFiles);
  24. ///<summary>
  25. ///   set the user name
  26. ///</summary>
  27. void SetUserName(IN const CString& strUserName);
  28. ///<summary>
  29. ///   set the password
  30. ///</summary>
  31. void SetPassword(IN const CString& strPassword);
  32. ///<summary>
  33. ///   set the smtp server address
  34. ///</summary>
  35. void SetSmtpServer(IN const CString& strSmtpServer);
  36. ///<summary>
  37. ///   set the sender address
  38. ///</summary>
  39. void SetSendMail(IN const CString& strSendMail);
  40. ///<summary>
  41. ///   set whether to validate the identity
  42. ///</summary>
  43. void SetValidate(IN BOOL bValidate);
  44. ///<summary>
  45. ///   get the last error description
  46. ///</summary>
  47. CString GetLastErrorMsg();
  48. private:
  49. ///<summary>
  50. ///   basic network functions
  51. ///</summary>
  52. BOOL Connect();
  53. BOOL Disconnect();
  54. //******************************************************************************
  55. ///<summary>
  56. ///   SMTP commands
  57. ///</summary>
  58. ///<summary>
  59. ///   identify the sender to the receiver
  60. ///</summary>
  61. ///<param name = nType>
  62. ///   the type of the protocol
  63. ///</param>
  64. BOOL CmdHelo(IN int nType = ORIGIN_SMTP);
  65. ///<summary>
  66. ///   initiate a mail transaction
  67. ///</summary>
  68. BOOL CmdMailFrom();
  69. ///<summary>
  70. ///   identify the recipient
  71. ///</summary>
  72. BOOL CmdRcptTo(IN const CString& strTo);
  73. ///<summary>
  74. ///   transmit data
  75. ///</summary>
  76. BOOL CmdData(IN CMailMessage* pMsg);
  77. ///<summary>
  78. ///   confirm a user
  79. ///</summary>
  80. BOOL CmdVrfy(IN const CString& str);
  81. ///<summary>
  82. ///   confirm a mailing list
  83. ///</summary>
  84. BOOL CmdExpn(IN const CString& strList);
  85. ///<summary>
  86. ///   ask the receiver to send helpful information
  87. ///</summary>
  88. ///<param name = strCmdList>
  89. ///   the command that the server supports
  90. ///</param>
  91. BOOL CmdHelp(OUT vector<CString>& strCmdList);
  92. ///<summary>
  93. ///   no action other than that the receiver send an OK reply
  94. ///</summary>
  95. BOOL CmdNoop();
  96. ///<summary>
  97. ///   close the transmission
  98. ///</summary>
  99. BOOL CmdQuit();
  100. ///<summary>
  101. ///   cancel the current transaction
  102. ///</summary>
  103. BOOL CmdRSET();
  104. ///<summary>
  105. ///   verify the username and its password
  106. ///</summary>
  107. BOOL CmdAuthLogin();
  108. //******************************************************************************
  109. ///<summary>
  110. ///   add multiple recipients
  111. ///</summary>
  112. BOOL AddMultiRecipient(IN CMailMessage* pMsg);
  113. ///<summary>
  114. ///   set socket parameters
  115. ///</summary>
  116. BOOL SetNetParams();
  117. ///<summary>
  118. ///   get the response and parse
  119. ///</summary>
  120. ///<param name = >
  121. ///   the responset type that you want to check
  122. ///</param>
  123. BOOL CheckResponse(IN const UINT nResponse_expected);
  124. ///<summary>
  125. ///   handle the periods in the message body 
  126. ///</summary>
  127. CString CookBody(IN CMailMessage* pMsg);
  128. //******************************************************************************
  129. ///<summary>
  130. ///   the mail server address
  131. ///</summary>
  132. CString m_strSmtpServer;
  133. ///<summary>
  134. ///   the sender address
  135. ///</summary>
  136. CString m_strSendMail;
  137. ///<summary>
  138. ///   the name and password
  139. ///</summary>
  140. CString m_strUserName;
  141. CString m_strPassword;
  142. ///<summary>
  143. ///   whether the smtp server need validate the identity
  144. ///</summary>
  145. BOOL m_bValidate;
  146. ///<summary>
  147. ///   the socket used for transmitting
  148. ///</summary>
  149. CSocket m_wsSMTPServer;
  150. ///<summary>
  151. ///   the last error
  152. ///</summary>
  153. CString m_strError;
  154. ///<summary>
  155. ///   the socket parameters
  156. ///</summary>
  157. int m_nRecvTimeout;
  158. int m_nSendTimeout;
  159. ///<summary>
  160. ///   the pointer to the buffer for receiving
  161. ///</summary>
  162. TCHAR *m_pszResponse_buf;
  163. ///<summary>
  164. ///   used for responding
  165. ///</summary>
  166. struct response_code
  167. {
  168. UINT nResponse; // Response expected
  169. TCHAR* pszMessage; // Error message if we don't get it
  170. };
  171. enum eResponse
  172. {
  173. GENERIC_SUCCESS = 0,
  174. CONNECT_SUCCESS,
  175. DATA_SUCCESS,
  176. QUIT_SUCCESS,
  177. AUTH_LOGIN,
  178. LOGIN_SUCCESS,
  179. LOGIN_FAILED,
  180. // Include any others here
  181. LAST_RESPONSE // Do not add entries past this one
  182. };
  183. static response_code s_response_table[];
  184. };