Отправитель Gmail API не отправляет несколько вложений - PullRequest
0 голосов
/ 03 октября 2018

Я использую Gmail API для отправки электронной почты в JavaScript.Работает нормально для текста плюс одно вложение.Но когда я пытаюсь отправить два вложения, прикрепляется только первое, а другое - ничего.Мой код для создания сообщения:

  var nl = '\n';
  var boundary = "__myapp__";

const messageParts = [
        'MIME-Version: 1.0',
        'Content-Transfer-Encoding: 7bit',
        'From: XXXX Support <XXXXX@XXXXX.XXXXX>',
        '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 КБ дважды, чтобы избежать каких-либо ограничений.Я думаю, что у меня есть ошибка в том, как я построил сообщение как-то, но не могу понять где.

1 Ответ

0 голосов
/ 04 октября 2018

В вашем первом приложении:

 '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

...