Я использую Gmail API для отправки электронной почты на JavaScript. Он отлично работает с текстом и одним вложением. Но когда я пытаюсь отправить два прикрепленных файла, прикрепляется только первое, а второе - ничего. Мой код для создания сообщения:
var nl = '\n';
var boundary = "__myapp__";
const messageParts = [
'MIME-Version: 1.0',
'Content-Transfer-Encoding: 7bit',
'From: XXXX Support <[email protected]>',
'To: Moin <' + event.email + '>',
'subject: ' + utf8Subject,
'Content-Type: multipart/mixed; boundary=' + boundary + nl,
'--' + boundary,
'Content-Type: text/plain; charset=UTF-8',
'Content-Transfer-Encoding: 7bit' + nl,
messageBody+ nl,
'--' + boundary,
'Content-Type: Application/pdf; name=' + testFileName,
'Content-Disposition: attachment; filename=' + testFileName,
'Content-Transfer-Encoding: base64' + nl,
testFile.Body.toString('base64'),
'--' + boundary,
'Content-Type: Application/pdf; name=' + testFileName,
'Content-Disposition: attachment; filename=' + testFileName,
'Content-Transfer-Encoding: base64',
testFile.Body.toString('base64'),
'--' + boundary + '--'
]
После этого я создаю строку из массива. Приведенный выше код просто тестируется с двойным подключением одного и того же небольшого вложения размером 6 КБ, чтобы избежать каких-либо ограничений. Я думаю, что у меня есть ошибка в том, как я как-то построил сообщение, но не могу понять, где.

В вашем первом приложении:
'Content-Type: Application/pdf; name=' + testFileName,
'Content-Disposition: attachment; filename=' + testFileName,
'Content-Transfer-Encoding: base64' + nl,
testFile.Body.toString('base64'),
'--' + boundary,
Во втором вложении:
'Content-Type: Application/pdf; name=' + testFileName,
'Content-Disposition: attachment; filename=' + testFileName,
'Content-Transfer-Encoding: base64',
testFile.Body.toString('base64'),
Вам не хватает завершающей новой строки для элемента заголовка «content-transfer-encoding».
Я настоятельно рекомендую использовать существующую библиотеку для составления сообщения MIME, поэтому вам не нужно беспокоиться об этих деталях. См .: https://www.npmjs.com/package/mimemessage
Большое спасибо, вот и все! Я попробую тот пакет npm, который вы предложили, потому что да, в противном случае это очень неудобно.