fixing the fix, only set binary, if it has not content-transfer-encoding header with value base64

This commit is contained in:
ralf 2024-03-05 20:03:18 +02:00
parent 858eebd527
commit 39d2b0aa54

View File

@ -7326,8 +7326,11 @@ class Mail
$structure->setTransferEncoding('8bit'); $structure->setTransferEncoding('8bit');
$structure->setCharset('utf-8'); $structure->setCharset('utf-8');
} }
// if we have no text body, but only a PDF or an image, set binary, as it's already base64 transfer-encoded // if we have no text body, but only a PDF or an image AND transfer-encoding is NOT base64,
if ($structure->getType() === 'application/pdf' || $structure->getPrimaryType() === 'image') // set binary, as it's already base64 transfer-encoded but lacks the necessary header
if (($structure->getType() === 'application/pdf' || $structure->getPrimaryType() === 'image') &&
// hack to read protected $structure->_transfer_encoding
unserialize($structure->serialize())[9] !== 'base64')
{ {
$structure->setTransferEncoding('binary', ['send' => true]); $structure->setTransferEncoding('binary', ['send' => true]);
} }