Я полагаю, что file.getContents () возвращает кодировку base64 для бинарных файлов.
Так что в вашей многочастной настройке попробуйте установить Content-Transfer-Encoding перед данными содержимого файла.
см. https://www.drupal.org/project/smtp/issues/2909678
, поэтому в моем ответе, на который вы ссылались выше, вы попытаетесь:
if (partIsFile) {
body.push(getContentType(p.value));
if(partIsBinary(p.value)) body.push('Content-Transfer-Encoding:base64');
}