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

Email客户端

开发平台:

Visual C++

  1. #pragma once
  2. /********************************************************************
  3. created: 2008:10:24   17:48
  4. author: 李欣
  5. filename: c:MyProjectSimpleMailSimpleMailMIMEMessage.h
  6. classname:  CMIMEMessage
  7. purpose: Formats a message using the MIME specification.
  8. *********************************************************************/
  9. class CMIMEMessage : public CMailMessage  
  10. {
  11. public:
  12. CMIMEMessage();
  13. virtual ~CMIMEMessage();
  14. enum eMIMETypeCode
  15. {
  16. TEXT_PLAIN = 0,
  17. APPLICATION_OCTETSTREAM,
  18. NEXT_FREE_MIME_CODE
  19. };
  20. enum eMIMEEncodingCode
  21. {
  22. _7BIT = 0,
  23. _8BIT,
  24. BINARY,
  25. QUOTED_PRINTABLE,
  26. BASE64,
  27. NEXT_FREE_ENCODING_CODE
  28. };
  29. ///<summary>
  30. ///   add the part to the part-list used to build the body.
  31. ///</summary>
  32. ///<param name = szContent>
  33. ///   the content of this mime part
  34. ///</param>
  35. ///<param name = nContentType>
  36. ///   the MIME type
  37. ///</param>
  38. ///<param name = szParameters>
  39. ///   parameters needed by some mime types
  40. ///</param>
  41. ///<param name = nEncoding>
  42. ///   the encoding type
  43. ///</param>
  44. ///<param name = bPath>
  45. ///   whether szContent is a path
  46. ///</param>
  47. BOOL AddMIMEPart(IN LPCTSTR szContent,
  48.  IN const int nContentType = APPLICATION_OCTETSTREAM,
  49.  IN LPCTSTR szParameters = _T(""), 
  50.  IN const int nEncoding = BASE64, 
  51.  IN const BOOL bPath = TRUE);
  52. protected:
  53. ///<summary>
  54. ///   format the pure header 
  55. ///</summary>
  56. virtual void PrepareHeader();
  57. ///<summary>
  58. ///   do some jobs if necessary
  59. ///</summary>
  60. virtual void PrepareBody();
  61. ///<summary>
  62. ///   Insert the boundary part at the end
  63. ///</summary>
  64.     void InsertMessageEnd(INOUT CString& strText);
  65. ///<summary>
  66. ///   Insert the boundary part
  67. ///</summary>
  68. void InsertBoundary(INOUT CString& strText);
  69. ///<summary>
  70. ///   register one mime type content into the manager
  71. ///</summary>
  72. void RegisterMimeType(IN CMIMEContentAgent* pMIMEType);
  73. ///<summary>
  74. ///   Append each mime part to the body
  75. ///</summary>
  76. virtual void AppendMimeParts();
  77.  
  78. ///<summary>
  79. ///   the comment
  80. ///</summary>
  81. CString m_strNoMIMEText;
  82. ///<summary>
  83. ///   the boundary string
  84. ///</summary>
  85. CString m_strPartBoundary;
  86. ///<summary>
  87. ///   the type of the mail
  88. ///</summary>
  89. CString m_strMIMEContentType;
  90. private:
  91. ///<summary>
  92. ///   the related information about one part of the body
  93. ///</summary>
  94. class CMIMEPart
  95. {
  96. public:
  97. int m_nEncoding;//the encoding type
  98. int m_nContentType;//the content type
  99. CString m_strParameters;//any parameters of this field
  100. BOOL m_bPath;//whether is a path
  101. CString m_strContent;//the content
  102. };
  103. ///<summary>
  104. ///   the list of different type parts
  105. ///</summary>
  106. CList <CMIMEPart, CMIMEPart&> m_MIMEPartList;
  107. ///<summary>
  108. ///   the manager of the mime type
  109. ///</summary>
  110. class CMIMETypeManager
  111. {
  112. public:
  113. CMIMETypeManager();
  114. virtual  ~CMIMETypeManager();
  115. ///<summary>
  116. ///   Get the specified type handler
  117. ///</summary>
  118. CMIMEContentAgent* GetHandler(IN const int nContentType);
  119. ///<summary>
  120. ///   register one mime type content into the manager
  121. ///</summary>
  122. void RegisterMIMEType(IN CMIMEContentAgent* pMIMEType);
  123. private:
  124. CCriticalSection m_csAccess;
  125. ///<summary>
  126. ///   the list to store different type parts
  127. ///</summary>
  128. CList <CMIMEContentAgent*, CMIMEContentAgent*> m_MIMETypeList;
  129. };
  130. static CMIMETypeManager m_MIMETypeManager;
  131. };