void handlePart(const MessageHeader& header, std::istream& stream) /// Handles a part. If message pointer was provided at construction time, /// the message pointed to will be properly populated so it could be written /// back out at a later point in time. { std::string tmp; Poco::StreamCopier::copyToString(stream, tmp); if (_pMsg) {

These values are not case sensitive. That is, Base64 and BASE64 and bAsE64 are all equivalent. An encoding type of 7BIT requires that the body is already in a seven-bit mail- ready representation. This is the default value -- that is, "Content-Transfer-Encoding: 7BIT" is assumed if the Content-Transfer-Encoding header field is not present

So, Poco should default to 7-bit if there is no content transfer encoding header on the mail. Looks like it is defaulting to 7bit BUT also looks like there is no check if the header exists.

I suggest you open an issue on github (https://github.com/pocoproject/poco/issues/new) with a link to this post and/or with this information. And as you are a developer, maybe also fork and push a fix suggestion, if you wish. Anyway a Poco developer or another community contributor (like me and maybe you ) might find some time to fix it and then it can get into next releases . Looks like a simple fix, just checking if the header exists before getting its value seems to be a good fix.