#pragma once #include "acl_cpp/acl_cpp_define.hpp" #include "acl_cpp/mime/mime_head.hpp" class mime_builder { public: mime_builder(); ~mime_builder(); /** * 获得邮件头 * @return {acl::mime_head&} */ acl::mime_head& primary_header(void) { return (header_); } /** * 设置邮件正文内容,为纯文本格式 * @param src {const char*) 正文内容 * @param len {size_t} src 内容长度 * @return {mime_builder&} */ mime_builder& set_body_text(const char* src, size_t len); /** * 设置邮件正文内容,为 HTML 格式 * @param src {const char*) 正文内容 * @param len {size_t} src 内容长度 * @return {mime_builder&} */ mime_builder& set_body_html(const char* src, size_t len); /** * 添加附件 * @param filepath {const char*} 附件文件路径 * @return {mime_builder&} */ mime_builder& add_file(const char* filepath); /** * 创建邮件内容,并转存至文件中 * @param to {const char*} 目标文件 * @return {bool} */ bool save_as(const char* to); /** * 创建邮件内容,并转存至文件中 * @param fp {acl::ofstream&} 目标文件句柄 * @return {bool} */ bool save_as(acl::ofstream& fp); private: acl::mime_head header_; char* body_text_; char* body_html_; std::vector attachs_; acl::string delimeter_; bool add_body(acl::ofstream& fp); bool add_boundary(acl::ofstream& fp, bool end = false); bool add_attach(acl::ofstream& fp, const char* filepath); };