p≡p MIME library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.8 KiB

// This file is under GNU General Public License 3.0
// see LICENSE.txt
// This is the main header for pEp MIME, a C++ library to parse & generate MIME-compliant messages
// There exists a C wrapper that is compatible to <pEp/mime.h>
#ifndef PEP_MIME_HH
#define PEP_MIME_HH
#include <pEp/message.h>
#ifdef _WIN32
#include <pEp/platform_windows.h>
namespace pEpMIME
// multipart messages are parsed recursively up to a maximum nesting level.
// It should be large enough that all real-world mails can be parsed, but no
// stack overflow occurs on maliciously crafted messages.
// Deeper nested multipart messages are just put as attachment.
// 100 seems to be a good default value, I think.
const unsigned MaxMultipartNestingLevel = 100;
// Parse the given string loosely as an "Internet Message" that aims to be RFC 5322
// and MIME compliant (RFC 2046 etc.)
// parameters:
// mime_text (in) : an "Internet Message"
// length (in) : length of the mime_text, because it might contain NUL bytes
// return value:
// a message struct that must be freed via free_message() or NULL on error.
message* parse_message(const char* mime_text, size_t length);
// Generates an RFC 5322 compliant Internet Message from the given message struct.
// parameters:
// msg (in) : the message that shall be serialized.
// omit_fields(in) : only encode message body and attachments
// transport_encode (in) : apply transport encoding (UTF-8 otherwise)
// return value:
// a string holding an RFC-compliant "Internet Message", or NULL on error.
// the string must be freed via pEp_free().
char* generate_message(const message* msg, bool omit_fields, bool transport_encode=true);
} // end of namespace pEpMIME
#endif // PEP_MIME_HH