xrtImapClientConfigInit

初始化 IMAP 143 端口、64 KiB 命令/响应行和 XRT 网络默认值。

void xrtImapClientConfigInit(ximapclientconfig* pConfig);
参数说明
ximapclientconfig* pConfig配置结构
返回:初始化 IMAP 143 端口、64 KiB 命令/响应行和 XRT 网络默认值。

示例已编译验证

imapclientconfiginit obj;
xrtImapClientConfigInit(&obj);

xrtImapClientConfigValid

验证网络所有者、线路上限和命令上限。

bool xrtImapClientConfigValid(const ximapclientconfig* pConfig);
参数说明
const ximapclientconfig* pConfig配置结构
返回:验证网络所有者、线路上限和命令上限。

示例已编译验证

/* 验证网络所有者、线路上限和命令上限。 */
result = xrtImapClientConfigValid(pConfig);

xrtImapClientOpen

建立连接,读取 greeting,完成 CAPABILITY 和可选 STARTTLS。

ximapclient* xrtImapClientOpen( const ximapclientconfig* pConfig, xdeadline iDeadline, xcancel* pCancel );
参数说明
const ximapclientconfig* pConfig配置结构
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:建立连接,读取 greeting,完成 CAPABILITY 和可选 STARTTLS。

示例已编译验证

/* 建立连接,读取 greeting,完成 CAPABILITY 和可选 STARTTLS。 */
result = xrtImapClientOpen(pConfig, iDeadline, pCancel);

xrtImapClientState

返回当前 IMAP 协议层级或终态。

ximapclientstate xrtImapClientState(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回当前 IMAP 协议层级或终态。

示例已编译验证

/* 返回当前 IMAP 协议层级或终态。 */
result = xrtImapClientState(pClient);

xrtImapClientCapabilities

返回最近一次 CAPABILITY 快照中的已知能力位。

uint64 xrtImapClientCapabilities(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回最近一次 CAPABILITY 快照中的已知能力位。

示例已编译验证

/* 返回最近一次 CAPABILITY 快照中的已知能力位。 */
result = xrtImapClientCapabilities(pClient);

xrtImapClientSecurity

返回当前会话实际使用的明文或 TLS 传输安全级别。

xmailsecurity xrtImapClientSecurity(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回当前会话实际使用的明文或 TLS 传输安全级别。

示例已编译验证

/* 返回当前会话实际使用的明文或 TLS 传输安全级别。 */
result = xrtImapClientSecurity(pClient);

xrtImapClientTag

返回顺序命令当前使用的自动 tag;没有活动命令时返回空视图。

xstrview xrtImapClientTag(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回顺序命令当前使用的自动 tag;没有活动命令时返回空视图。

示例已编译验证

/* 返回顺序命令当前使用的自动 tag;没有活动命令时返回空视图。 */
result = xrtImapClientTag(pClient);

xrtImapClientLiteralRemaining

返回当前服务器 literal 尚未读取的字节数。

size_t xrtImapClientLiteralRemaining(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回当前服务器 literal 尚未读取的字节数。

示例已编译验证

/* 返回当前服务器 literal 尚未读取的字节数。 */
result = xrtImapClientLiteralRemaining(pClient);

xrtImapClientCommandLimit

返回当前命令行总长度上限。

size_t xrtImapClientCommandLimit(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回当前命令行总长度上限。

示例已编译验证

/* 返回当前命令行总长度上限。 */
result = xrtImapClientCommandLimit(pClient);

xrtImapClientAppendLimit

返回 CAPABILITY 声明的全局 APPEND 上限,未知或按邮箱决定时返回 UNKNOWN。

uint64 xrtImapClientAppendLimit(const ximapclient* pClient);
参数说明
const ximapclient* pClient客户端对象
返回:返回 CAPABILITY 声明的全局 APPEND 上限,未知或按邮箱决定时返回 UNKNOWN。

示例已编译验证

/* 返回 CAPABILITY 声明的全局 APPEND 上限,未知或按邮箱决定时返回 UNKNOWN。 */
result = xrtImapClientAppendLimit(pClient);

xrtImapClientLastResponse

返回最近 greeting 或 tagged completion 的稳定借用视图。

bool xrtImapClientLastResponse( const ximapclient* pClient, ximapresponseview* pResponse );
参数说明
const ximapclient* pClient客户端对象
ximapresponseview* pResponse响应对象
返回:返回最近 greeting 或 tagged completion 的稳定借用视图。

示例已编译验证

/* 返回最近 greeting 或 tagged completion 的稳定借用视图。 */
result = xrtImapClientLastResponse(pClient, pResponse);

xrtImapClientSend

XRT_API bool xrtImapClientSend( ximapclient* pClient, xstrview Tag, xstrview Command, xstrview Arguments, xdeadline iDeadline, xcancel* pCancel );

;
返回:XRT_API bool xrtImapClientSend( ximapclient* pClient, xstrview Tag, xstrview Command, xstrview Arguments, xdeadline iDeadline, xcancel* pCancel );

示例已编译验证

/* XRT_API bool xrtImapClientSend( ximapclient* pClient, xstrview Tag, xstrview Command, xstrview Arguments, xdeadline iDeadline, xcancel* pCancel ); */
result = xrtImapClientSend();

xrtImapClientSendParts

XRT_API bool xrtImapClientSendParts( ximapclient* pClient, xstrview Tag, xstrview Command, const xstrview* pArguments, size_t iCount, xdeadline iDeadline, xcancel* pCancel );

;
返回:XRT_API bool xrtImapClientSendParts( ximapclient* pClient, xstrview Tag, xstrview Command, const xstrview* pArguments, size_t iCount, xdeadline iDeadline, xcancel* pCancel );

示例已编译验证

/* XRT_API bool xrtImapClientSendParts( ximapclient* pClient, xstrview Tag, xstrview Command, const xstrview* pArguments, size_t iCount, xdeadline iDeadline, xcancel* pCancel ); */
result = xrtImapClientSendParts();

xrtImapClientWrite

发送原始命令续传字节,用于 APPEND literal 等协议扩展。

bool xrtImapClientWrite( ximapclient* pClient, const void* pData, size_t iSize, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
const void* pData用户数据
size_t iSize字节数
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:发送原始命令续传字节,用于 APPEND literal 等协议扩展。

示例已编译验证

/* 发送原始命令续传字节,用于 APPEND literal 等协议扩展。 */
result = xrtImapClientWrite(pClient, pData, iSize, iDeadline, pCancel);

xrtImapClientContinue

发送一条不带 tag 的 continuation 数据并自动追加 CRLF。

bool xrtImapClientContinue( ximapclient* pClient, xstrview Data, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
xstrview Data数据内容
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:发送一条不带 tag 的 continuation 数据并自动追加 CRLF。

示例已编译验证

/* 发送一条不带 tag 的 continuation 数据并自动追加 CRLF。 */
result = xrtImapClientContinue(pClient, Data, iDeadline, pCancel);

xrtImapClientReceive

XRT_API bool xrtImapClientReceive( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel );

;
返回:XRT_API bool xrtImapClientReceive( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel );

示例已编译验证

/* XRT_API bool xrtImapClientReceive( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel ); */
result = xrtImapClientReceive();

xrtImapClientReadLiteral

把当前 literal 的下一段读入调用方缓冲区,Read 返回实际读取量。

bool xrtImapClientReadLiteral( ximapclient* pClient, void* pBuffer, size_t iCapacity, size_t* pRead, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
void* pBuffer缓冲区
size_t iCapacity容量
size_t* pReadRead 参数
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:把当前 literal 的下一段读入调用方缓冲区,Read 返回实际读取量。

示例已编译验证

/* 把当前 literal 的下一段读入调用方缓冲区,Read 返回实际读取量。 */
result = xrtImapClientReadLiteral(pClient, pBuffer, iCapacity, pRead, iDeadline, pCancel);

xrtImapClientBegin

生成唯一 tag 并开始一个顺序命令。

bool xrtImapClientBegin( ximapclient* pClient, xstrview Command, xstrview Arguments, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
xstrview Command命令文本
xstrview Arguments命令参数
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:生成唯一 tag 并开始一个顺序命令。

示例已编译验证

/* 生成唯一 tag 并开始一个顺序命令。 */
result = xrtImapClientBegin(pClient, Command, Arguments, iDeadline, pCancel);

xrtImapClientBeginParts

生成唯一 tag 并以零拼接方式开始多参数顺序命令。

bool xrtImapClientBeginParts( ximapclient* pClient, xstrview Command, const xstrview* pArguments, size_t iCount, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
xstrview Command命令文本
const xstrview* pArguments命令参数
size_t iCount数量
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:生成唯一 tag 并以零拼接方式开始多参数顺序命令。

示例已编译验证

/* 生成唯一 tag 并以零拼接方式开始多参数顺序命令。 */
result = xrtImapClientBeginParts(pClient, Command, pArguments, iCount, iDeadline, pCancel);

xrtImapClientNext

XRT_API xmailnext xrtImapClientNext( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel );

;
返回:XRT_API xmailnext xrtImapClientNext( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel );

示例已编译验证

/* XRT_API xmailnext xrtImapClientNext( ximapclient* pClient, ximapevent* pEvent, xdeadline iDeadline, xcancel* pCancel ); */
result = xrtImapClientNext();

xrtImapClientRefresh

在没有活动顺序命令时重新获取并替换 CAPABILITY 快照。

bool xrtImapClientRefresh( ximapclient* pClient, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:在没有活动顺序命令时重新获取并替换 CAPABILITY 快照。

示例已编译验证

/* 在没有活动顺序命令时重新获取并替换 CAPABILITY 快照。 */
result = xrtImapClientRefresh(pClient, iDeadline, pCancel);

xrtImapClientLogout

发送 LOGOUT,消费 BYE 和 tagged completion,并正常关闭传输。

bool xrtImapClientLogout( ximapclient* pClient, xdeadline iDeadline, xcancel* pCancel );
参数说明
ximapclient* pClient客户端对象
xdeadline iDeadline截止时间
xcancel* pCancel取消令牌
返回:发送 LOGOUT,消费 BYE 和 tagged completion,并正常关闭传输。

示例已编译验证

/* 发送 LOGOUT,消费 BYE 和 tagged completion,并正常关闭传输。 */
result = xrtImapClientLogout(pClient, iDeadline, pCancel);

xrtImapClientClose

不发送 LOGOUT,直接正常关闭传输。

bool xrtImapClientClose( ximapclient* pClient, xdeadline iDeadline );
参数说明
ximapclient* pClient客户端对象
xdeadline iDeadline截止时间
返回:不发送 LOGOUT,直接正常关闭传输。

示例已编译验证

/* 不发送 LOGOUT,直接正常关闭传输。 */
result = xrtImapClientClose(pClient, iDeadline);

xrtImapClientAbort

立即异常中止连接;重复调用成功,FAILED 状态保留到销毁。

bool xrtImapClientAbort(ximapclient* pClient);
参数说明
ximapclient* pClient客户端对象
返回:立即异常中止连接;重复调用成功,FAILED 状态保留到销毁。

示例已编译验证

/* 立即异常中止连接;重复调用成功,FAILED 状态保留到销毁。 */
result = xrtImapClientAbort(pClient);

xrtImapClientDestroy

释放客户端;尚未关闭时执行异常中止。

void xrtImapClientDestroy(ximapclient* pClient);
参数说明
ximapclient* pClient客户端对象
返回:释放客户端;尚未关闭时执行异常中止。

示例已编译验证

xrtImapClientDestroy(pClient);