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

Email客户端

开发平台:

Visual C++

  1. #pragma once
  2. /********************************************************************
  3. created: 2008:9:26   13:41
  4. author: 李欣
  5. filename: c:MyProjectSimpleMailSimpleMailReceiveManager.h
  6. classname:  CReceiveManager
  7. purpose: implement the pop3 protocol to send the mail
  8. *********************************************************************/
  9. class CPopReceiveManager
  10. {
  11. public:
  12. CPopReceiveManager(void);
  13. public:
  14. ~CPopReceiveManager(void);
  15. ///<summary>
  16. ///   receive the mails
  17. ///</summary>
  18. ///<param name = pSaveMngr>
  19. ///   the object used to save the mails
  20. ///</param>
  21. ///<param name = phProgressDlg>
  22. ///   the pointer to the progress dialog
  23. ///</param>
  24. ///<param name = arrPos>
  25. ///   the position to locate each mail in the file
  26. ///</param>
  27. ///<param name = arrSize>
  28. ///   the size of each mail
  29. ///</param>
  30. /// <returns>
  31. ///   the value dictating whether it is successful
  32. /// </returns>
  33. HRESULT RecMail(IN CMailSaveMngr* pSaveMngr, 
  34. IN CRecvProgressDlg* pProgressDlg,
  35. OUT CArray<MAILPOS>& arrPos, 
  36. OUT CArray<UINT>& arrSize);
  37. ///<summary>
  38. ///   delete the specified mail
  39. ///</summary>
  40. ///<param name = arrIndex>
  41. ///   the index of the mail to be deleted
  42. ///</param>
  43. /// <returns>
  44. ///   the value dictating whether it is successful
  45. /// </returns>
  46. HRESULT DelMail(IN const CArray<UINT>& arrIndex);
  47. ///<summary>
  48. ///   set the user name
  49. ///</summary>
  50. void SetUserName(IN const CString& strUserName);
  51. ///<summary>
  52. ///   set the password
  53. ///</summary>
  54. void SetPassword(IN const CString& strPassword);
  55. ///<summary>
  56. ///   set the pop3 server address
  57. ///</summary>
  58. void SetPopServer(IN const CString& strPopServer);
  59. ///<summary>
  60. ///   get the last error description
  61. ///</summary>
  62. CString GetLastErrorMsg();
  63. private:
  64. ///<summary>
  65. ///   basic network functions
  66. ///</summary>
  67. BOOL Connect();
  68. BOOL Disconnect();
  69. //////////////////////////////////////////////////////////////////////////
  70. ///<summary>
  71. ///   POP3 commands
  72. ///</summary>
  73. ///<summary>
  74. ///   commands in the AUTHORIZATION state, identify the client to the POP3 server
  75. ///</summary>
  76. BOOL AuthorizationState();
  77. ///<summary>
  78. ///   query the number of mails and the size of the maildrop 
  79. ///</summary>
  80. BOOL CmdStat();
  81. ///<summary>
  82. ///   query the message-number of the mail and the exact size of the mail 
  83. ///</summary> 
  84. ///<param name = nMsgNumber>
  85. ///   specify the index of the mail which you want to know about if you don't want the all mail information
  86. ///</param>
  87. BOOL CmdList(IN const int nMsgNumber = 0); 
  88. ///<summary>
  89. ///   Receive any specified mail 
  90. ///</summary>
  91. BOOL CmdRetr(IN const int nMsgNumber);
  92. ///<summary>
  93. ///   Delete a specified mail from the server 
  94. ///</summary>
  95. BOOL CmdDele(IN const int nMsgNumber);
  96. ///<summary>
  97. ///   no action other than that the receiver send an OK reply
  98. ///</summary>
  99. BOOL CmdNoop();
  100. ///<summary>
  101. ///   change the mails marked as deleted to be unmarked
  102. ///</summary>
  103. BOOL CmdRset();
  104. ///<summary>
  105. ///   to enter the UPDATE state
  106. ///</summary>
  107. BOOL CmdQuit();
  108. ///<summary>
  109. ///    get certain number of lines of the specified message's body
  110. ///</summary>
  111. ///<param name = nMsgNumber>
  112. ///   the mail's index that you want
  113. ///</param>
  114. ///<param name = nLength>
  115. ///   the line number you want to get
  116. ///</param>
  117. BOOL CmdTop(IN const int nMsgNumber, IN const int nLength);
  118. //////////////////////////////////////////////////////////////////////////
  119. ///<summary>
  120. ///   read the response from the network
  121. ///</summary>
  122. ///<param name = pszBuf>
  123. ///   the buffer to store the response
  124. ///</param>
  125. ///<param name = nBufSize>
  126. ///   the size of the buffer
  127. ///</param>
  128. BOOL ReadResponse(INOUT LPSTR pszBuf, IN const int nBufSize);
  129. ///<summary>
  130. ///   get the response and parse
  131. ///</summary>
  132. ///<param name = >
  133. ///   the type of the command whose response you want to check
  134. ///</param>
  135. BOOL CheckResponse(IN const int nResponseType);
  136. ///<summary>
  137. ///   get the first char meaningful in the response
  138. ///</summary>
  139. ///<param name = pszData>
  140. ///   the origin data
  141. ///</param>
  142. /// <returns>
  143. ///   the result of processing
  144. /// </returns>
  145. LPCSTR GetFirstMeaningChar(INOUT LPCSTR pszData) const;
  146. ///<summary>
  147. ///   parse the response of STAT
  148. ///</summary>
  149. ///<param name = szBuf>
  150. ///   the response to be parsed
  151. ///</param>
  152. BOOL ParseStatResponse(IN LPCSTR szBuf);
  153. ///<summary>
  154. ///   parse the response of LIST
  155. ///</summary>
  156. ///<param name = szBuf>
  157. ///   the response to be parsed
  158. ///</param>
  159. BOOL ParseListResponse(IN LPCSTR szBuf);
  160. ///<summary>
  161. ///   parse the response of RETR
  162. ///</summary>
  163. ///<param name = szBuf>
  164. ///   the response to be parsed
  165. ///</param>
  166. BOOL ParseRetrResponse(IN LPCSTR szBuf);
  167. ///<summary>
  168. ///   parse the response of TOP
  169. ///</summary>
  170. ///<param name = szBuf>
  171. ///   the response to be parsed
  172. ///</param>
  173. BOOL ParseTopResponse(IN LPCSTR szBuf);
  174. ///<summary>
  175. ///   return the size of overall mails  
  176. ///</summary>
  177. int GetTotalMailSize();
  178. ///<summary>
  179. ///   set socket parameters
  180. ///</summary>
  181. BOOL SetNetParams();
  182. //////////////////////////////////////////////////////////////////////////
  183. ///<summary>
  184. ///   the size of overall mails
  185. ///</summary>
  186. int m_nTotalSize; 
  187. ///<summary>
  188. ///   the current mail content received
  189. ///</summary>
  190. CString m_strMsgContents; 
  191. ///<summary>
  192. ///   the size of each mail
  193. ///</summary>
  194. CWordArray m_SizeOfMsg; 
  195. ///<summary>
  196. ///   the socket used for transmitting
  197. ///</summary>
  198. CSocket m_PopServer; 
  199. ///<summary>
  200. ///   the error description
  201. ///</summary>
  202. CString m_strError;
  203. ///<summary>
  204. ///   the number of mails
  205. ///</summary>
  206. int m_nNumMail; 
  207. ///<summary>
  208. ///   the user name
  209. ///</summary>
  210. CString m_strUserName;
  211. ///<summary>
  212. ///   the password
  213. ///</summary>
  214. CString m_strPassword;
  215. ///<summary>
  216. ///   the pop3 server address
  217. ///</summary>
  218. CString m_strPopServer;
  219. ///<summary>
  220. ///   the socket parameters
  221. ///</summary>
  222. int m_nRecvTimeout;
  223. int m_nSendTimeout;
  224. };