acl
3.5.3.0
rfc822.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "../stdlib/noncopyable.hpp"
4
#include <list>
5
#include <time.h>
6
7
#if !defined(ACL_MIME_DISABLE)
8
9
namespace
acl
{
10
11
/**
12
* 邮件地址
13
*/
14
struct
rfc822_addr
15
{
16
char
*
addr
;
// 邮件地址,格式为: xxx@xxx.xxx
17
char
*
comment
;
// 邮件备注
18
};
19
20
typedef
enum
21
{
22
tzone_gmt
,
23
tzone_cst
24
}
tzone_t
;
25
26
class
ACL_CPP_API
rfc822
:
public
noncopyable
27
{
28
public
:
29
rfc822
(
void
);
30
~
rfc822
(
void
);
31
32
/**
33
* 解析符合 RFC822 标准的时间格式
34
* @param in {const char*} 时间字符串,如:
35
* Wed, 11 May 2011 09:44:37 +0800 (CST)
36
* Wed, 11 May 2011 16:17:39 GMT
37
*/
38
time_t parse_date(
const
char
*in);
39
40
/**
41
* 生成符合 RFC822 标准的时间格式
42
* @param t {time_t}
43
* @param out {char*} 存储转换结果
44
* @param size {size_t} out 空间大小
45
* @param zone {tzone_t} 所在时区
46
*/
47
void
mkdate(time_t t,
char
* out,
size_t
size,
tzone_t
zone =
tzone_cst
);
48
49
/**
50
* 生成东八区的时间格式
51
* @param t {time_t}
52
* @param out {char*} 存储转换结果
53
* @param size {size_t} out 空间大小
54
*/
55
void
mkdate_cst(time_t t,
char
* out,
size_t
size);
56
57
/**
58
* 生成格林威治时间的时间格式
59
* @param t {time_t}
60
* @param out {char*} 存储转换结果
61
* @param size {size_t} out 空间大小
62
*/
63
void
mkdate_gmt(time_t t,
char
* out,
size_t
size);
64
65
/**
66
* 解析邮件地址列表,将符合 RFC822 标准的邮件地址列表解析成
67
* 人能正常看懂的邮件地址列表,同时将用户名注释部分进行
68
* RFC2047解码
69
* @param in {const char*} RFC822 格式的邮件地址列表,如:
70
* "=?gb2312?B?1dSx+A==?= <zhaobing@51iker.com>;\r\n"
71
* "\t\"=?GB2312?B?t+vBosn6?=\" <fenglisheng@51iker.com>;\r\n"
72
* "\t\"zhengshuxin3\";\"zhengshuxin4\" <zhengshuxin2@51iker.com>;"
73
* "<xuganghui@51iker.com>;<wangwenquan@51iker.com>;"
74
* @param to_charset {const char*} 目标字符集,例如:gbk, gb18030, utf-8
75
* @return {const std::list<rfc822_addr*>&} 解析结果
76
*/
77
const
std::list<rfc822_addr*>& parse_addrs(
const
char
* in,
78
const
char
* to_charset =
"utf-8"
);
79
80
/**
81
* 解析一个符合 RFC822 标准的邮件地址,同时将用户名注释部分按
82
* RFC2047 标准进行解码
83
* @param in {const char*} RFC822 格式的邮件地址
84
* @param to_charset {const char*} 目标字符集,例如:gbk, gb18030, utf-8
85
* @return {const rfc822_addr*} 返回 NULL 表明输入的邮件地址不符合
86
* RFC822 规范
87
*/
88
const
rfc822_addr
* parse_addr(
const
char
* in,
89
const
char
* to_charset =
"utf-8"
);
90
91
/**
92
* 检查邮件地址是否合法
93
* @param in {const char*} RFC822 格式的邮件地址
94
* @return {bool}
95
*/
96
bool
check_addr(
const
char
* in);
97
98
private
:
99
std::list<rfc822_addr*> addrs_;
100
101
void
reset(
void
);
102
};
103
104
}
// namespace acl
105
106
#endif // !defined(ACL_MIME_DISABLE)
acl::rfc822_addr::addr
char * addr
Definition:
rfc822.hpp:16
acl::tzone_t
tzone_t
Definition:
rfc822.hpp:20
acl::rfc822_addr
Definition:
rfc822.hpp:14
acl
Definition:
acl_cpp_init.hpp:4
acl::noncopyable
Definition:
noncopyable.hpp:6
acl::rfc822_addr::comment
char * comment
Definition:
rfc822.hpp:17
acl::tzone_gmt
Definition:
rfc822.hpp:22
acl::rfc822
Definition:
rfc822.hpp:26
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::tzone_cst
Definition:
rfc822.hpp:23
include
acl_cpp
mime
rfc822.hpp
生成于 2021年 九月 10日 星期五 11:14:44 , 为 acl使用
1.8.15