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 LineLne 参数
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 iMaxLinesMaxLnes 参数
返回:初始化多行 SMTP 响应验证器;零限制使用默认值。

示例已编译验证

smtpreplyparserinit obj;
xrtSmtpReplyParserInit(&obj, pParser, iMaxLines);

xrtSmtpReplyRead

接受并发布一条响应行;解析器完成后不再接受输入。

bool xrtSmtpReplyRead( xsmtpreplyparser* pParser, xstrview Line, xsmtpreplyline* pReply );
参数说明
xsmtpreplyparser* pParser解析器
xstrview LineLne 参数
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* pSizeLimitSzeLmt 参数
返回:把一条能力及其参数合并到位集和 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 VerbVerb 参数
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 VerbVerb 参数
xstrview Arguments命令参数
size_t* pOutputSize出:输出长度
返回:创建由 xrtFree 释放的 SMTP 命令行。

示例已编译验证

/* 创建由 xrtFree 释放的 SMTP 命令行。 */
result = xrtSmtpCommand(Verb, Arguments, pOutputSize);