acl  3.5.3.0
mime_body.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "mime_node.hpp"
4 
5 #if !defined(ACL_MIME_DISABLE)
6 
7 struct MIME_NODE;
8 
9 namespace acl {
10 
11 class pipe_manager;
12 class ostream;
13 class pipe_string;
14 class string;
15 
17 {
18 public:
19  /**
20  * 构造函数
21  * @param emailFile {const char*} 存储邮件内容的源文件,可以
22  * 为空,但当为空时在调用 save_body 函数时,则不能指定源文件
23  * @param node {const MIME_NODE*} 邮件中的某个结点对象
24  * @param htmlFirst {bool} 是否在提取内容时优先提取 HTML 数据
25  * @param enableDecode {bool} 当邮件内容为 base64/qp 等编译格式
26  * 时是否需要自动进行解码
27  * @param toCharset {const char*} 缺省的目标字符集,如果目标
28  * 字符集与源字符集不同,则进行字符集转换
29  * @param off {off_t} 邮件内容在整个数据中的起始位置中附加的
30  * 相对偏移量,以便于用户可以在邮件内容前面加自己的私有数据
31  */
32  mime_body(const char* emailFile, const MIME_NODE* node,
33  bool htmlFirst = true, bool enableDecode = true,
34  const char* toCharset = "gb2312", off_t off = 0)
35  : mime_node(emailFile, node, enableDecode, toCharset, off)
36  , m_htmlFirst(htmlFirst)
37  {
38  }
39 
40  ~mime_body(void) {}
41 
42  /**
43  * 设置是否仅提取 HTML 数据, 如果为 true 则优先提取 HTML 数据,
44  * 当不存在 HTML 数据时才会提取纯文本数据; 如果为 false 则优先
45  * 提取纯文本数据, 如果仅有 HTML 数据时则会从该 HTML 数据中抽
46  * 取出纯文本数据
47  * @param htmlFirst {bool}
48  */
49  void set_status(bool htmlFirst)
50  {
51  m_htmlFirst = htmlFirst;
52  }
53 
54  /**
55  * 转储邮件正文内容于管道流中
56  * @param out {pipe_manager&} 管道流管理器
57  * @param src {const char*} 邮件内容的起始地址,如果为空指针,
58  * 则从构造函数中所提供的 emailFile 的文件中提取邮件内容
59  * @param len {int} 邮件内容的数据长度,如果为0,则从构造
60  * 函数中所提供的 emailFile 的文件中提取邮件内容
61  * @return {bool} 是否成功
62  */
63  bool save_body(pipe_manager& out, const char* src = NULL,
64  int len = 0);
65 
66  /**
67  * 转储邮件正文内容于输出流中
68  * @param out {ostream&} 输出流
69  * @param src {const char*} 邮件内容的起始地址,如果为空指针,
70  * 则从构造函数中所提供的 emailFile 的文件中提取邮件内容
71  * @param len {int} 邮件内容的数据长度,如果为0,则从构造
72  * 函数中所提供的 emailFile 的文件中提取邮件内容
73  * @return {bool} 是否成功
74  */
75  bool save_body(ostream& out, const char* src = NULL,
76  int len = 0);
77 
78  /**
79  * 转储邮件正文内容于目标文件中
80  * @param file_path {const char*} 目标文件名
81  * @param src {const char*} 邮件内容的起始地址,如果为空指针,
82  * 则从构造函数中所提供的 emailFile 的文件中提取邮件内容
83  * @param len {int} 邮件内容的数据长度,如果为0,则从构造
84  * 函数中所提供的 emailFile 的文件中提取邮件内容
85  * @return {bool} 是否成功
86  */
87  bool save_body(const char* file_path, const char* src = NULL,
88  int len = 0);
89 
90  /**
91  * 转储邮件正文内容于管道缓冲区内
92  * @param out {pipe_string&} 管道缓冲区
93  * @param src {const char*} 邮件内容的起始地址,如果为空指针,
94  * 则从构造函数中所提供的 emailFile 的文件中提取邮件内容
95  * @param len {int} 邮件内容的数据长度,如果为0,则从构造
96  * 函数中所提供的 emailFile 的文件中提取邮件内容
97  * @return {bool} 是否成功
98  */
99  bool save_body(pipe_string& out, const char* src = NULL,
100  int len = 0);
101 
102  /**
103  * 转储邮件正文内容于缓冲区中
104  * @param out {string&} 缓冲区
105  * @param src {const char*} 邮件内容的起始地址,如果为空指针,
106  * 则从构造函数中所提供的 emailFile 的文件中提取邮件内容
107  * @param len {int} 邮件内容的数据长度,如果为0,则从构造
108  * 函数中所提供的 emailFile 的文件中提取邮件内容
109  * @return {bool} 是否成功
110  */
111  bool save_body(string& out, const char* src = NULL,
112  int len = 0);
113 
114  /**
115  * 判断结点头部类型中的从类型是否 MIME_STYPE_HTML 类型
116  * @return {bool}
117  */
118  bool html_stype(void) const;
119 
120 private:
121  bool m_htmlFirst;
122 };
123 
124 } // namespace acl
125 
126 #endif // !defined(ACL_MIME_DISABLE)
~mime_body(void)
Definition: mime_body.hpp:40
mime_body(const char *emailFile, const MIME_NODE *node, bool htmlFirst=true, bool enableDecode=true, const char *toCharset="gb2312", off_t off=0)
Definition: mime_body.hpp:32
void set_status(bool htmlFirst)
Definition: mime_body.hpp:49
#define ACL_CPP_API