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->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 ($structure->getType() === 'application/pdf' || $structure->getPrimaryType() === 'image')
// if we have no text body, but only a PDF or an image AND transfer-encoding is NOT base64,
// 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]);
}