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 iLineSizeLneSze 参数
返回:验证、折叠并写出一个 `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 iLineSizeLneSze 参数
返回:编码 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 iLineSizeLneSze 参数
返回:格式化 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 BoundaryMIME 边界
xmailmultipartmark MarkMark 参数
返回:写出可与 part 字段和正文直接拼接的 multipart 分隔片段。

示例已编译验证

/* 写出可与 part 字段和正文直接拼接的 multipart 分隔片段。 */
result = xrtMailBuilderMultipart(pBuilder, Boundary, Mark);

xrtMailBuilderPartBegin

写出 FIRST/NEXT 分隔片段并进入当前 part 的字段阶段。

bool xrtMailBuilderPartBegin( xmailbuilder* pBuilder, xstrview Boundary, xmailmultipartmark Mark );
参数说明
xmailbuilder* pBuilder构建器
xstrview BoundaryMIME 边界
xmailmultipartmark MarkMark 参数
返回:写出 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);