AWS 단순 이메일 서비스 + 서버리스 Vercel + Node.js 무료로 이메일 배포 및 수신

Vercel(Heroku, Netlify, e.t.c)에서 AWS SES로 Node.js 서버를 배포(생성)하는 방법에 대한 빠른 가이드입니다.

우리의 강령은 양식 제출 시 확인 이메일을 보냅니다.
  • 서버 생성

  • const express = require("express");
    const path = require("path");
    const bodyParser = require("body-parser");
    const app = express();
    const port = process.env.PORT || 8080;
    
    app.get("/home", function (req, res) {
      res.sendFile(path.join(__dirname, "/index.html"));
    });
    
    app.listen(port);
    
    console.log("Server started at http://localhost:" + port);
    


    더 이상 Post Routes가 필요하지 않습니다.

    HTML>

    <!DOCTYPE html>
    <html lang="en">
    <head>
    </head>
    <body>
    <div>Works!</div>
    </body>
    </html>
    


  • AWS Simple Email Notification Service를 설정합니다.
    https://us-east-1.console.aws.amazon.com/ses/home?region=us-east-1#/homepage







  • 이메일을 확인해야 합니다.

    완료.
  • HTML에서 <form action="/api/hello" method="POST" style=" padding: 1%;margin-left:25%;width: 50%;">를 추가해야 합니다.
  • /api/hello는 Vercel에서 Serverless용 엔드포인트입니다.
  • api 폴더에 Logic Inside hello.js 파일을 만듭니다.

  • var aws = require("aws-sdk");
    
    export default function hello(req, res) {
      const formData = req.body;
      console.log(req.body.name);
    
      aws.config.update({
        credentials: {
          accessKeyId: process.env.AWS_ACCESS_KEY_ID_MYAPP,
          secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY_MYAPP,
        },
        region: process.env.AWS_REGION_MYAPP,
      });
    
      // AWS.config.update({region: });
    
      var params = {
        Destination: {
          /* required */
          CcAddresses: [
            "ser****@gmail.com",
            /* more items */
          ],
          ToAddresses: [
            "serp****@gmail.com",
            "[email protected]",
            /* more items */
          ],
        },
        Message: {
          /* required */
          Body: {
            /* required */
            Text: {
              Charset: "UTF-8",
              Data: `${JSON.stringify(formData)}`,
            },
          },
          Subject: {
            Charset: "UTF-8",
            Data: "Test email",
          },
        },
        Source: "serp****@gmail.com" /* required */,
        ReplyToAddresses: [
          "serpu****@gmail.com",
          /* more items */
        ],
      };
    
      // Create the promise and SES service object
      var sendPromise = new aws.SES({ apiVersion: "2010-12-01" })
        .sendEmail(params)
        .promise();
    
      // Handle promise's fulfilled/rejected states
      sendPromise
        .then(function (data) {
          console.log(data.MessageId);
          res.status(200).send(`Hello Thank you!!`);
        })
        .catch(function (err) {
          console.error(err, err.stack);
        });
      //   res.redirect("/home");
      //
    }
    


    Vercel 웹사이트에 env 변수를 추가하는 것을 잊지 마십시오.

    결론



    읽어 주셔서 감사합니다.

    연결



    🖇 팔로우GitHub

    🖇 팔로우

    _p.s 이 포스팅은 저의 궁금증으로 작성되었습니다.

    좋은 웹페이지 즐겨찾기