Кодировать Base64 и отправлять как вложение - PullRequest
0 голосов
/ 03 ноября 2019

Это пример структуры файла :

file:
   [ { container:'data:application/pdf;base64,JVBERi0x ...,
       filename: 'logofinal.psd',
       mimetype: 'application/pdf',
       file_type: 'random'}]

Как я могу отправить его как вложение в nodemailer , я добавил:

  attachments: [
    { 
      filename: mailData.file.filename,
      content: mailData.file.container,
      contentType: mailData.file.mimetype,
      encoding: 'base64'
    }
  ]

Может быть, мне нужен буфер для удаления заголовка из file.container?

Однако у меня нет идеи, как решить эту проблему.

1 Ответ

0 голосов
/ 04 ноября 2019
  • Вы хотите отправить электронное письмо с файлом вложения.
  • У вас есть данные base64, и вы хотите отправить их в виде файла вложения.
  • Вы хотите достичьэто с помощью nodemailer.
  • Вы уже смогли получать и отправлять электронные письма, используя nodemailer с Gmail API.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Шаблон 1:

В этом шаблоне данные base64 напрямую отправляются с помощью нодмаилера.

Модифицированный скрипт:

Когда ваш скрипт изменяется, пожалуйста, измените его следующим образом.

attachments: [
  { 
    filename: mailData.file.filename,
    content: content: /data:.*;base64,/.test(mailData.file.container) ? mailData.file.container.split(",")[1] : mailData.file.container,
    contentType: mailData.file.mimetype,
    encoding: 'base64'
  }
]
  • Если заголовок данных base64 (например, data:application/pdf;base64,) всегда включен, вы также можете изменить наcontent: mailData.file.container.split(",")[1].

Шаблон 2:

В этом шаблоне данные base64 преобразуются в буфер и отправляются с использованием nodemailer.

Измененоscript:

Когда ваш скрипт изменяется, пожалуйста, измените его следующим образом.

attachments: [
  { 
    filename: mailData.file.filename,
    content: Buffer.from((/data:.*;base64,/.test(mailData.file.container) ? mailData.file.container.split(",")[1] : mailData.file.container), 'base64'),
    contentType: mailData.file.mimetype,
  }
]
  • Если заголовок данных base64 (например, data:application/pdf;base64,) всегда включен, вы можететакже измените на content: Buffer.from(mailData.file.container.split(",")[1], 'base64'),.

Ссылка:

Если я неправильно понял ваш вопроси это было не то направление, которое вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...