Pop3.h
上传用户:liuzhunlcd
上传日期:2007-01-12
资源大小:54k
文件大小:4k
源码类别:

Email客户端

开发平台:

Visual C++

  1. /*
  2. Module : POP3.H
  3. Purpose: Defines the interface for a MFC class encapsulation of the POP3 protocol
  4. Created: PJN / 04-05-1998
  5.   Copyright (c) 1998 - 2001 by PJ Naughter.  (Web: www.naughter.com, Email: pjna@naughter.com)
  6.   
  7. All rights reserved.
  8.   Copyright / Usage Details:
  9.   
  10. You are allowed to include the source code in any product (commercial, shareware, freeware or otherwise) 
  11. when your product is released in binary form. You are allowed to modify the source code in any way you want 
  12. except you cannot modify the copyright details at the top of each module. If you want to distribute source 
  13. code with your application, then you are only allowed to distribute versions released by the author. This is 
  14. to maintain a single distribution point for the source code. 
  15. */
  16. /////////////////////////////// Defines ///////////////////////////////////////
  17. #ifndef __POP3_H__
  18. #define __POP3_H__
  19. #ifndef __AFXTEMPL_H__
  20. #pragma message("POP3 classes require afxtempl.h in your PCH")   
  21. #endif
  22. #ifndef _WINSOCKAPI_
  23. #pragma message("POP3 classes require afxsock.h or winsock.h in your PCH")
  24. #endif
  25. /////////////////////////////// Classes ///////////////////////////////////////
  26. ////// forward declaration
  27. class CPop3Connection;
  28. //Encapsulation of a POP3 message
  29. class CPop3Message
  30. {
  31. public:
  32. //Constructors / Destructors
  33. CPop3Message();
  34. ~CPop3Message();
  35. //Methods
  36. LPCSTR GetMessageText() const { return m_pszMessage; };
  37. CString GetHeader() const;
  38. CString GetHeaderItem(const CString& sName, int nItem = 0) const;
  39. CString GetBody() const;
  40. LPCSTR GetRawBody() const;
  41. CString GetSubject() const { return GetHeaderItem(_T("Subject")); }
  42. CString GetFrom() const   { return GetHeaderItem(_T("From")); }
  43. CString GetDate() const   { return GetHeaderItem(_T("Date")); }
  44. CString GetTo() const  { return GetHeaderItem(_T("To")); }
  45. CString GetCC() const  { return GetHeaderItem(_T("CC")); }
  46. CString GetReplyTo() const;
  47. CString GetContentType() const;
  48. CString GetBoundary() const;
  49. //protected:
  50. char* m_pszMessage;
  51. friend class CPop3Connection;
  52. };
  53. //Simple Socket wrapper class
  54. class CPop3Socket
  55. {
  56. public:
  57. //Constructors / Destructors
  58. CPop3Socket();
  59. ~CPop3Socket();
  60. //methods
  61. BOOL Create();
  62. BOOL Connect(LPCTSTR pszHostAddress, int nPort = 110);
  63. BOOL Send(LPCSTR pszBuf, int nBuf);
  64. void Close();
  65. int Receive(LPSTR pszBuf, int nBuf);
  66. BOOL IsReadible(BOOL& bReadible);
  67. protected:
  68. BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen);
  69. SOCKET m_hSocket;
  70. friend class CPop3Connection;
  71. };
  72. //The main class which encapsulates the POP3 connection
  73. class CPop3Connection
  74. {
  75. public:
  76. //Constructors / Destructors
  77. CPop3Connection();
  78. ~CPop3Connection();
  79. //Methods
  80. BOOL Connect(LPCTSTR pszHostName, LPCTSTR pszUser, LPCTSTR pszPassword, int nPort = 110);
  81. BOOL Disconnect();
  82. BOOL Statistics(int& nNumberOfMails, int& nTotalMailSize);
  83. BOOL Delete(int nMsg);
  84. BOOL GetMessageSize(int nMsg, DWORD& dwSize);
  85. BOOL GetMessageID(int nMsg, CString& sID);
  86. BOOL Retrieve(int nMsg, CPop3Message& message);
  87. BOOL GetMessageHeader(int nMsg, CPop3Message& message);
  88. BOOL Reset();
  89. BOOL UIDL();
  90. BOOL Noop();
  91. CString  GetLastCommandResponse() const { return m_sLastCommandResponse; };
  92. DWORD GetTimeout() const { return m_dwTimeout; };
  93. void SetTimeout(DWORD dwTimeout) { m_dwTimeout = dwTimeout; };
  94. protected:
  95. virtual BOOL ReadStatResponse(int& nNumberOfMails, int& nTotalMailSize);
  96. virtual BOOL ReadCommandResponse();
  97. virtual BOOL ReadListResponse(int nNumberOfMails);
  98. virtual BOOL ReadUIDLResponse(int nNumberOfMails);
  99. virtual BOOL ReadReturnResponse(CPop3Message& message, DWORD dwSize);
  100. virtual BOOL ReadResponse(LPSTR pszBuffer, int nInitialBufSize, LPSTR pszTerminator, LPSTR* ppszOverFlowBuffer, int nGrowBy=4096);
  101. BOOL List();
  102. LPSTR GetFirstCharInResponse(LPSTR pszData) const;
  103. CPop3Socket m_Pop;
  104. int  m_nNumberOfMails;
  105. BOOL m_bListRetrieved;
  106. BOOL m_bStatRetrieved;
  107. BOOL m_bUIDLRetrieved;
  108. CDWordArray m_msgSizes;
  109. CStringArray m_msgIDs;
  110. BOOL m_bConnected;
  111. CString m_sLastCommandResponse;
  112. DWORD m_dwTimeout;
  113. };
  114. #endif //__POP3_H__