ses.sendCustomVerificationEmail не является функцией, использующей AWS JavaScript SDK v2

#node.js #aws-sdk #amazon-ses #aws-sdk-js #aws-sdk-nodejs

Вопрос:

Я пытаюсь использовать AWS СЭС API, чтобы проверить электронные письма, в Nodejs/Экспресс-приложение, которое я собираю, и я пытаюсь использовать пользовательский шаблон для проверки электронной почты, а не по умолчанию отправляется Amazon, чтобы избежать путаницы, так как я не хочу, чтобы мои пользователи получали сообщение о том, что «дорогой Amazon веб-сервисы поддержки, мы получили запрос на авторизацию этот адрес электронной почты для использования с Amazon СЭС…. и т. д.», И это кажется достаточно простым по AWS документы здесь: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-verify-address-custom.html
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html#sendCustomVerificationEmail-property

однако, когда я пытаюсь это сделать, я продолжаю получать эту ошибку «ses.sendCustomVerificationEmail не является функцией».

Может ли кто-нибудь сказать мне, где я ошибаюсь в этом, и, возможно, указать мне правильное направление…. Вот мой код:

 const express = require("express");
const aws = require("aws-sdk");
require("dotenv").config();

const app = express();

aws.config.update({
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  region: process.env.region
});

// Instantiate SES.
const ses = new aws.SES();

// Verify email addresses.
app.get("/verify/:email", (req, res) => {
  const params = {
    EmailAddress: req.params.email,
    TemplateName: "SampleTemplate" // template is already created
  };

  ses.sendCustomVerificationEmail(params, (err, data) => {
    if (err) {
      res.send(err);
    } else {
      res.send(data);
    }
  });
});


// Start server.
const server = app.listen(8000, () => {
  const port = server.address().port;

  console.log("AWS SES example app listening on port", port);
});

 

Спасибо!!

Комментарии:

1. Не могу размножаться в этом свежем Repl.it — не могли бы вы подробнее рассказать о версии aws-sdk , которую вы установили? Что дает ваш /verify/:email обработчик маршрутов console.log(typeof ses.sendCustomVerificationEmail) ?

2. Он вернулся неопределенным, но я только что узнал, что мой менеджер пакетов по какой-то причине установил aws-sdk версии 2.1.35, и когда я обновил его до версии, которую вы использовали на Repl.it ссылка сработала, так что спасибо за это, я уже пару часов чешу в затылке 🙂

Ответ №1:

Эта ошибка обычно возникает из-за устаревшей версии aws-sdk , установленной вашим менеджером пакетов. В вашем случае вы работали над версией v2.1.35, которая сильно устарела. При обновлении до последней версии AWS JavaScript SDK v2, которая составляет v2.973.0, вы увидите, что метод, который ранее отсутствовал, теперь доступен для использования в aws.SES пространстве имен.

Вам также следует подумать о переносе своего кода на AWS JavaScript SDK v3, поскольку он уже довольно давно заменяет версию SDK v2.