xrtMailBuilderInit
初始化处于字段阶段的同步流式 Builder。
bool xrtMailBuilderInit( xmailbuilder* pBuilder, xmailwriteproc pWrite, ptr pUserData );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xmailwriteproc pWrite | 写入回调 |
| ptr pUserData | 透传用户数据 |
返回:初始化处于字段阶段的同步流式 Builder。
示例已编译验证
mailbuilderinit obj; xrtMailBuilderInit(&obj, pBuilder, pWrite, pUserData);
xrtMailBuilderHeader
验证、折叠并写出一个 `Name: Value\r\n` 字段。
bool xrtMailBuilderHeader( xmailbuilder* pBuilder, xstrview Name, xstrview Value, size_t iLineSize );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Name | 名称(xstrview) |
| xstrview Value | 值 |
| size_t iLineSize | LneSze 参数 |
返回:验证、折叠并写出一个 `Name: Value\r\n` 字段。
示例已编译验证
/* 验证、折叠并写出一个 `Name: Value\r\n` 字段。 */ result = xrtMailBuilderHeader(pBuilder, Name, Value, iLineSize);
xrtMailBuilderWordHeader
编码 UTF-8 字段值后写出字段,适用于 Subject 等非结构化字段。
bool xrtMailBuilderWordHeader( xmailbuilder* pBuilder, xstrview Name, xstrview Value, xmailwordencoding Encoding, size_t iLineSize );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Name | 名称(xstrview) |
| xstrview Value | 值 |
| xmailwordencoding Encoding | 编码 |
| size_t iLineSize | LneSze 参数 |
返回:编码 UTF-8 字段值后写出字段,适用于 Subject 等非结构化字段。
示例已编译验证
/* 编码 UTF-8 字段值后写出字段,适用于 Subject 等非结构化字段。 */ result = xrtMailBuilderWordHeader(pBuilder, Name, Value, Encoding, iLineSize);
xrtMailBuilderAddressHeader
格式化 mailbox 数组后写出地址字段。
bool xrtMailBuilderAddressHeader( xmailbuilder* pBuilder, xstrview Name, const xmailaddress* pAddresses, size_t iCount, xmailwordencoding Encoding, uint32 iFlags, size_t iLineSize );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Name | 名称(xstrview) |
| const xmailaddress* pAddresses | 地址数组 |
| size_t iCount | 数量 |
| xmailwordencoding Encoding | 编码 |
| uint32 iFlags | 标志位 |
| size_t iLineSize | LneSze 参数 |
返回:格式化 mailbox 数组后写出地址字段。
示例已编译验证
/* 格式化 mailbox 数组后写出地址字段。 */ result = xrtMailBuilderAddressHeader(pBuilder, Name, pAddresses, iCount, Encoding, iFlags, iLineSize);
xrtMailBuilderHeaderBlock
零复制写出一个或多个已经完整验证、以 CRLF 结束的字段。
bool xrtMailBuilderHeaderBlock( xmailbuilder* pBuilder, xstrview Block );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Block | 阻塞对象 |
返回:零复制写出一个或多个已经完整验证、以 CRLF 结束的字段。
示例已编译验证
/* 零复制写出一个或多个已经完整验证、以 CRLF 结束的字段。 */ result = xrtMailBuilderHeaderBlock(pBuilder, Block);
xrtMailBuilderHeadersEnd
写出字段终止空行并进入正文阶段。
bool xrtMailBuilderHeadersEnd(xmailbuilder* pBuilder);
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
返回:写出字段终止空行并进入正文阶段。
示例已编译验证
/* 写出字段终止空行并进入正文阶段。 */ result = xrtMailBuilderHeadersEnd(pBuilder);
xrtMailBuilderBody
零复制写出任意正文或已编码 MIME 片段。
bool xrtMailBuilderBody( xmailbuilder* pBuilder, const void* pData, size_t iSize );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| const void* pData | 用户数据 |
| size_t iSize | 字节数 |
返回:零复制写出任意正文或已编码 MIME 片段。
示例已编译验证
/* 零复制写出任意正文或已编码 MIME 片段。 */ result = xrtMailBuilderBody(pBuilder, pData, iSize);
xrtMailBuilderMultipart
写出可与 part 字段和正文直接拼接的 multipart 分隔片段。
bool xrtMailBuilderMultipart( xmailbuilder* pBuilder, xstrview Boundary, xmailmultipartmark Mark );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Boundary | MIME 边界 |
| xmailmultipartmark Mark | Mark 参数 |
返回:写出可与 part 字段和正文直接拼接的 multipart 分隔片段。
示例已编译验证
/* 写出可与 part 字段和正文直接拼接的 multipart 分隔片段。 */ result = xrtMailBuilderMultipart(pBuilder, Boundary, Mark);
xrtMailBuilderPartBegin
写出 FIRST/NEXT 分隔片段并进入当前 part 的字段阶段。
bool xrtMailBuilderPartBegin( xmailbuilder* pBuilder, xstrview Boundary, xmailmultipartmark Mark );
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
| xstrview Boundary | MIME 边界 |
| xmailmultipartmark Mark | Mark 参数 |
返回:写出 FIRST/NEXT 分隔片段并进入当前 part 的字段阶段。
示例已编译验证
/* 写出 FIRST/NEXT 分隔片段并进入当前 part 的字段阶段。 */ result = xrtMailBuilderPartBegin(pBuilder, Boundary, Mark);
xrtMailBuilderFinish
关闭 Builder;不自动补换行、boundary 或传输编码。
bool xrtMailBuilderFinish(xmailbuilder* pBuilder);
| 参数 | 说明 |
|---|---|
| xmailbuilder* pBuilder | 构建器 |
返回:关闭 Builder;不自动补换行、boundary 或传输编码。
示例已编译验证
/* 关闭 Builder;不自动补换行、boundary 或传输编码。 */ result = xrtMailBuilderFinish(pBuilder);