xrtSmtpClientConfigInit
初始化明文 25 端口、localhost EHLO 和有界响应配置。
| 参数 | 说明 |
|---|---|
| xsmtpclientconfig* pConfig | 配置结构 |
示例已编译验证
smtpclientconfiginit obj; xrtSmtpClientConfigInit(&obj);
xrtSmtpClientConfigValid
验证网络所有者、EHLO 名称和响应行上限。
| 参数 | 说明 |
|---|---|
| const xsmtpclientconfig* pConfig | 配置结构 |
示例已编译验证
/* 验证网络所有者、EHLO 名称和响应行上限。 */ result = xrtSmtpClientConfigValid(pConfig);
xrtSmtpClientOpen
建立连接,验证 220 banner 并完成 EHLO/可选 HELO 和 STARTTLS。
| 参数 | 说明 |
|---|---|
| const xsmtpclientconfig* pConfig | 配置结构 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 建立连接,验证 220 banner 并完成 EHLO/可选 HELO 和 STARTTLS。 */ result = xrtSmtpClientOpen(pConfig, iDeadline, pCancel);
xrtSmtpClientState
返回当前事务或终态。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 返回当前事务或终态。 */ result = xrtSmtpClientState(pClient);
xrtSmtpClientCapabilities
返回最近一次 EHLO 得到的已知能力位集。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 返回最近一次 EHLO 得到的已知能力位集。 */ result = xrtSmtpClientCapabilities(pClient);
xrtSmtpClientSizeLimit
返回服务器声明的 SIZE;零表示未声明或未给出上限。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 返回服务器声明的 SIZE;零表示未声明或未给出上限。 */ result = xrtSmtpClientSizeLimit(pClient);
xrtSmtpClientSecurity
返回当前会话实际使用的明文或 TLS 传输安全级别。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 返回当前会话实际使用的明文或 TLS 传输安全级别。 */ result = xrtSmtpClientSecurity(pClient);
xrtSmtpClientAuthenticated
返回当前会话是否已成功完成 SMTP AUTH。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 返回当前会话是否已成功完成 SMTP AUTH。 */ result = xrtSmtpClientAuthenticated(pClient);
xrtSmtpClientLastReply
取得最近一条完整响应的稳定借用摘要。
| 参数 | 说明 |
|---|---|
| const xsmtpclient* pClient | 客户端对象 |
| xsmtpreply* pReply | 回复队列 |
示例已编译验证
/* 取得最近一条完整响应的稳定借用摘要。 */ result = xrtSmtpClientLastReply(pClient, pReply);
xrtSmtpClientSend
发送一条不含 CRLF 的低层 SMTP 行。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview Line | Lne 参数 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 发送一条不含 CRLF 的低层 SMTP 行。 */ result = xrtSmtpClientSend(pClient, Line, iDeadline, pCancel);
xrtSmtpClientAuthLine
发送预编码的 SASL 响应行;允许认证协议要求的扩展行长。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview Line | Lne 参数 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 发送预编码的 SASL 响应行;允许认证协议要求的扩展行长。 */ result = xrtSmtpClientAuthLine(pClient, Line, iDeadline, pCancel);
xrtSmtpClientReceive
读取并验证一条完整单行或多行响应。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xsmtpreply* pReply | 回复队列 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 读取并验证一条完整单行或多行响应。 */ result = xrtSmtpClientReceive(pClient, pReply, iDeadline, pCancel);
xrtSmtpClientCommand
构建并发送命令,然后读取完整响应。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview Verb | Verb 参数 |
| xstrview Arguments | 命令参数 |
| xsmtpreply* pReply | 回复队列 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 构建并发送命令,然后读取完整响应。 */ result = xrtSmtpClientCommand(pClient, Verb, Arguments, pReply, iDeadline, pCancel);
xrtSmtpClientMail
开始新 envelope;空 ReversePath 表示标准空反向路径。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview ReversePath | ReversePath 参数 |
| xstrview Parameters | 参数列表 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 开始新 envelope;空 ReversePath 表示标准空反向路径。 */ result = xrtSmtpClientMail(pClient, ReversePath, Parameters, iDeadline, pCancel);
xrtSmtpClientRcpt
增加一个收件人;接受 250、251 和 252 响应。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview ForwardPath | ForwardPath 参数 |
| xstrview Parameters | 参数列表 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 增加一个收件人;接受 250、251 和 252 响应。 */ result = xrtSmtpClientRcpt(pClient, ForwardPath, Parameters, iDeadline, pCancel);
xrtSmtpClientDataBegin
进入 DATA 模式并验证 354 响应。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 进入 DATA 模式并验证 354 响应。 */ result = xrtSmtpClientDataBegin(pClient, iDeadline, pCancel);
xrtSmtpClientDataWrite
发送任意分块边界的消息片段,并跨片段执行 dot transparency。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xbytesview Data | 数据内容 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 发送任意分块边界的消息片段,并跨片段执行 dot transparency。 */ result = xrtSmtpClientDataWrite(pClient, Data, iDeadline, pCancel);
xrtSmtpClientDataEnd
补足 DATA 终止行、读取最终响应并回到 READY。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 补足 DATA 终止行、读取最终响应并回到 READY。 */ result = xrtSmtpClientDataEnd(pClient, iDeadline, pCancel);
xrtSmtpClientData
直接流式发送完整消息视图,执行 dot transparency 而不复制整份报文。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xstrview Message | 消息文本 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 直接流式发送完整消息视图,执行 dot transparency 而不复制整份报文。 */ result = xrtSmtpClientData(pClient, Message, iDeadline, pCancel);
xrtSmtpClientBdatBegin
声明一个 BDAT 块并直接发送命令头;随后必须精确写入 iChunkSize 个字节。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| size_t iChunkSize | ChunkSze 参数 |
| bool Last | 最后一个 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 声明一个 BDAT 块并直接发送命令头;随后必须精确写入 iChunkSize 个字节。 */ result = xrtSmtpClientBdatBegin(pClient, iChunkSize, Last, iDeadline, pCancel);
xrtSmtpClientBdatWrite
写入当前 BDAT 块的任意片段;不扫描、不转义且不追加线路分隔符。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xbytesview Data | 数据内容 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 写入当前 BDAT 块的任意片段;不扫描、不转义且不追加线路分隔符。 */ result = xrtSmtpClientBdatWrite(pClient, Data, iDeadline, pCancel);
xrtSmtpClientBdatEnd
验证块长度、读取 250 响应,并进入下一块或结束当前 envelope。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 验证块长度、读取 250 响应,并进入下一块或结束当前 envelope。 */ result = xrtSmtpClientBdatEnd(pClient, iDeadline, pCancel);
xrtSmtpClientBdat
零副本发送一个连续 BDAT 块;服务器拒绝后必须 RSET 才能继续。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xbytesview Data | 数据内容 |
| bool Last | 最后一个 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 零副本发送一个连续 BDAT 块;服务器拒绝后必须 RSET 才能继续。 */ result = xrtSmtpClientBdat(pClient, Data, Last, iDeadline, pCancel);
xrtSmtpClientReset
取消当前 envelope 并回到 READY。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 取消当前 envelope 并回到 READY。 */ result = xrtSmtpClientReset(pClient, iDeadline, pCancel);
xrtSmtpClientNoop
验证连接仍可交换命令。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 验证连接仍可交换命令。 */ result = xrtSmtpClientNoop(pClient, iDeadline, pCancel);
xrtSmtpClientQuit
发送 QUIT、验证 221 并认证关闭传输。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
| xcancel* pCancel | 取消令牌 |
示例已编译验证
/* 发送 QUIT、验证 221 并认证关闭传输。 */ result = xrtSmtpClientQuit(pClient, iDeadline, pCancel);
xrtSmtpClientClose
不发送 QUIT,直接正常关闭传输。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
| xdeadline iDeadline | 截止时间 |
示例已编译验证
/* 不发送 QUIT,直接正常关闭传输。 */ result = xrtSmtpClientClose(pClient, iDeadline);
xrtSmtpClientAbort
立即异常中止连接;重复调用成功,FAILED 状态保留到销毁。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
示例已编译验证
/* 立即异常中止连接;重复调用成功,FAILED 状态保留到销毁。 */ result = xrtSmtpClientAbort(pClient);
xrtSmtpClientDestroy
释放客户端;尚未关闭时执行异常中止。
| 参数 | 说明 |
|---|---|
| xsmtpclient* pClient | 客户端对象 |
示例已编译验证
xrtSmtpClientDestroy(pClient);