/*-------------------------------------------------------------*/ /* MIME : rfc 2045 to 2049 */ /*-------------------------------------------------------------*/ /* rfc 2045 MIME-Version: 1.0 */ netwib_err netwox_mime_version(netwib_buf *pbuf); /*-------------------------------------------------------------*/ /* rfc 2047 quoted-printable : =?iso-8859-1?q?this=20is=20some=20text?= base64 : =?ISO-8859-1?B?aWYgeW91IHJlYWQgdGhpcyBzZW5kIG1lIGFuIGVtYWlsIDop?= */ typedef enum { NETWOX_MIME_HDRENCODE_TYPE_QUOTEDPRINTABLE = 1, NETWOX_MIME_HDRENCODE_TYPE_BASE64 } netwox_mime_hdrencode_type; netwib_err netwox_mime_hdrencode(netwib_constbuf *ptext, netwox_mime_hdrencode_type type, netwib_buf *pbuf); #define netwox_mime_hdrencode_q(ptext,pbuf) netwox_mime_hdrencode(ptext,NETWOX_MIME_HDRENCODE_TYPE_QUOTEDPRINTABLE,pbuf) #define netwox_mime_hdrencode_b(ptext,pbuf) netwox_mime_hdrencode(ptext,NETWOX_MIME_HDRENCODE_TYPE_BASE64,pbuf) /*-------------------------------------------------------------*/ /* rfc 2045 Content-type: [type]; name=... */ netwib_err netwox_mime_ct(netwib_conststring type, netwib_constbuf *pname, netwib_buf *pbuf); #define netwox_mime_ct_textplainusascii(pname,pbuf) netwox_mime_ct("text/plain; charset=us-ascii",pname,pbuf) #define netwox_mime_ct_textplainiso88591(pname,pbuf) netwox_mime_ct("text/plain; charset=iso-8859-1",pname,pbuf) #define netwox_mime_ct_appoctetstream(pname,pbuf) netwox_mime_ct("application/octet-stream",pname,pbuf) /*-------------------------------------------------------------*/ /* rfc 2045 Content-Transfer-Encoding: [type] */ netwib_err netwox_mime_cte(netwib_conststring type, netwib_buf *pbuf); #define netwox_mime_cte_7bit(pbuf) netwox_mime_cte("7bit",pbuf) #define netwox_mime_cte_8bit(pbuf) netwox_mime_cte("8bit",pbuf) #define netwox_mime_cte_base64(pbuf) netwox_mime_cte("base64",pbuf) /*-------------------------------------------------------------*/ /* rfc 2183 Content-Disposition: [type]; filename=... */ netwib_err netwox_mime_cd(netwib_conststring type, netwib_constbuf *pfilename, netwib_buf *pbuf); #define netwox_mime_cd_inline(pbuf) netwox_mime_cd("inline",NULL,pbuf) #define netwox_mime_cd_attachment(pfilename,pbuf) netwox_mime_cd("attachment",pfilename,pbuf) /*-------------------------------------------------------------*/ /* rfc 2046 Content-type: multipart/mixed; boundary="b" --b --b-- */ netwib_err netwox_mime_mp_begin(netwib_buf *pboundary, /* generated */ netwib_buf *pbuf); netwib_err netwox_mime_mp_next(netwib_constbuf *pboundary, netwib_buf *pbuf); netwib_err netwox_mime_mp_end(netwib_constbuf *pboundary, netwib_buf *pbuf);