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 5cf6253f77
commit 8a9e75360c

View File

@ -7323,8 +7323,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]);
}