xrtSmtpPathValid
验证不含尖括号的 SMTP reverse-path 或 forward-path。
bool xrtSmtpPathValid(xstrview Path, bool AllowEmpty);
| 参数 | 说明 |
|---|---|
| xstrview Path | 路径 |
| bool AllowEmpty | 是否允许空值 |
返回:验证不含尖括号的 SMTP reverse-path 或 forward-path。
示例已编译验证
/* 验证不含尖括号的 SMTP reverse-path 或 forward-path。 */ result = xrtSmtpPathValid(Path, AllowEmpty);
xrtSmtpReplyLineParse
解析一条 `ddd-Text` 或 `ddd Text` SMTP 响应行。
bool xrtSmtpReplyLineParse( xstrview Line, xsmtpreplyline* pReply );
| 参数 | 说明 |
|---|---|
| xstrview Line | Lne 参数 |
| xsmtpreplyline* pReply | 回复队列 |
返回:解析一条 `ddd-Text` 或 `ddd Text` SMTP 响应行。
示例已编译验证
/* 解析一条 `ddd-Text` 或 `ddd Text` SMTP 响应行。 */ result = xrtSmtpReplyLineParse(Line, pReply);
xrtSmtpReplyParserInit
初始化多行 SMTP 响应验证器;零限制使用默认值。
bool xrtSmtpReplyParserInit( xsmtpreplyparser* pParser, size_t iMaxLines );
| 参数 | 说明 |
|---|---|
| xsmtpreplyparser* pParser | 解析器 |
| size_t iMaxLines | MaxLnes 参数 |
返回:初始化多行 SMTP 响应验证器;零限制使用默认值。
示例已编译验证
smtpreplyparserinit obj; xrtSmtpReplyParserInit(&obj, pParser, iMaxLines);
xrtSmtpReplyRead
接受并发布一条响应行;解析器完成后不再接受输入。
bool xrtSmtpReplyRead( xsmtpreplyparser* pParser, xstrview Line, xsmtpreplyline* pReply );
| 参数 | 说明 |
|---|---|
| xsmtpreplyparser* pParser | 解析器 |
| xstrview Line | Lne 参数 |
| xsmtpreplyline* pReply | 回复队列 |
返回:接受并发布一条响应行;解析器完成后不再接受输入。
示例已编译验证
/* 接受并发布一条响应行;解析器完成后不再接受输入。 */ result = xrtSmtpReplyRead(pParser, Line, pReply);
xrtSmtpCapabilityParse
把 EHLO 文本拆成能力名称和可选参数。
bool xrtSmtpCapabilityParse( xstrview Text, xsmtpcapabilityview* pCapability );
| 参数 | 说明 |
|---|---|
| xstrview Text | 文本视图 |
| xsmtpcapabilityview* pCapability | 能力列表 |
返回:把 EHLO 文本拆成能力名称和可选参数。
示例已编译验证
/* 把 EHLO 文本拆成能力名称和可选参数。 */ result = xrtSmtpCapabilityParse(Text, pCapability);
xrtSmtpCapability
返回已知能力名称对应的位;未知扩展返回零。
uint64 xrtSmtpCapability(xstrview Name);
| 参数 | 说明 |
|---|---|
| xstrview Name | 名称(xstrview) |
返回:返回已知能力名称对应的位;未知扩展返回零。
示例已编译验证
/* 返回已知能力名称对应的位;未知扩展返回零。 */ result = xrtSmtpCapability(Name);
xrtSmtpCapabilityAdd
把一条能力及其参数合并到位集和 SIZE 上限。
bool xrtSmtpCapabilityAdd( const xsmtpcapabilityview* pCapability, uint64* pCapabilities, uint64* pSizeLimit );
| 参数 | 说明 |
|---|---|
| const xsmtpcapabilityview* pCapability | 能力列表 |
| uint64* pCapabilities | 能力 |
| uint64* pSizeLimit | SzeLmt 参数 |
返回:把一条能力及其参数合并到位集和 SIZE 上限。
示例已编译验证
/* 把一条能力及其参数合并到位集和 SIZE 上限。 */ result = xrtSmtpCapabilityAdd(pCapability, pCapabilities, pSizeLimit);
xrtSmtpCommandWrite
安全写出 `Verb [Arguments]\r\n`,拒绝控制字符和命令注入。
bool xrtSmtpCommandWrite( xstrview Verb, xstrview Arguments, char* sOutput, size_t iCapacity, size_t* pOutputSize );
| 参数 | 说明 |
|---|---|
| xstrview Verb | Verb 参数 |
| xstrview Arguments | 命令参数 |
| char* sOutput | 输出缓冲 |
| size_t iCapacity | 容量 |
| size_t* pOutputSize | 出:输出长度 |
返回:安全写出 `Verb [Arguments]\r\n`,拒绝控制字符和命令注入。
示例已编译验证
/* 安全写出 `Verb [Arguments]\r\n`,拒绝控制字符和命令注入。 */ result = xrtSmtpCommandWrite(Verb, Arguments, sOutput, iCapacity, pOutputSize);
xrtSmtpCommand
创建由 xrtFree 释放的 SMTP 命令行。
str xrtSmtpCommand( xstrview Verb, xstrview Arguments, size_t* pOutputSize );
| 参数 | 说明 |
|---|---|
| xstrview Verb | Verb 参数 |
| xstrview Arguments | 命令参数 |
| size_t* pOutputSize | 出:输出长度 |
返回:创建由 xrtFree 释放的 SMTP 命令行。
示例已编译验证
/* 创建由 xrtFree 释放的 SMTP 命令行。 */ result = xrtSmtpCommand(Verb, Arguments, pOutputSize);