Как прикрепить файл к электронному письму, отправленному с помощью AWS SES с помощью Courier?

#node.js #email #email-attachments #amazon-ses #courier

#node.js #Адрес электронной почты #вложения электронной почты #amazon-ses #courier

Вопрос:

Я хотел бы добавить PDF-файл к электронному письму, которое я отправляю с помощью Courier. Я настроил свою учетную запись на использование Amazon SES в качестве поставщика услуг электронной почты. Я использую Courier Node.js SDK для отправки сообщения:

 const courier = CourierClient();

const { messageId } = await courier.send({
  eventId: "MONTHLY_BILLING", 
  recipientId: "81462728-70d2-4d71-ab44-9d627913f1dd", 
  data: {
    "tennant_id": "W5793",
    "tennant_name": "Oscorp, Inc.",
    "billing_date": {
      "month": "November",
      "year": "2020"
    },
    "amount": 99.0
  }
});
  

Как я могу также включить счет-фактуру в формате PDF?

Ответ №1:

Вы можете включить вложение, используя переопределение поставщика. Переопределения каждого поставщика различны, но вы можете узнать больше о переопределениях AWS SES в документах Courier .

Вам нужно будет получить файл, который вы хотите прикрепить, в виде строки в кодировке base64. Это зависит от того, где находится ваш файл. Чтобы извлечь файл из файловой системы, вы можете выполнить следующие действия:

 const fs = require('fs');

const file = fs.readFileSync("/path/to/file");
const strFile = new Buffer(file).toString("base64");
  

Теперь вы можете обновить свой метод отправки Courier, включив переопределение:

 const courier = CourierClient();

const { messageId } = await courier.send({
  eventId: "MONTHLY_BILLING", 
  recipientId: "81462728-70d2-4d71-ab44-9d627913f1dd", 
  data: {
    "tennant_id": "W5793",
    "tennant_name": "Oscorp, Inc.",
    "billing_date": {
      "month": "November",
      "year": "2020"
    },
    "amount": 99.0
  },
  override: {
    "aws-ses": {
      attachments: [
        {
          fileName: "FileName.pdf",
          contentType: "application/pdf",
          data: strFile
        }
      ]
    }
  }
});