NodeJS를 사용하여 Amazon SES를 통해 여러 파일이 있는 Zip 첨부 파일로 이메일 보내기

7217 단어 nodeaws
다음 요구 사항이 포함된 이메일을 보내려고 합니다.
  • Zip 첨부 파일이 있는 이메일.
  • 여러 로그 파일이 포함된 Zip 파일
  • 이메일은 Amazon SES를 거쳐야 합니다.
  • NodeJS를 사용하여 구현해야 함

  • 파일 시스템 또는 원격 파일의 파일과 같은 다른 소스를 압축할 수도 있습니다. Buffer로 압축하기 위해 AdmZip로 변환하기만 하면 됩니다.

    다음 NodeJS 라이브러리를 사용합니다.
  • NodeMailer
  • Adm Zip

  • 추신: 이 전체 작업은 메모리 내에서 수행됩니다. 대용량 파일에는 사용하면 안 됩니다. 이 경우 Stream를 사용해야 합니다.

    다음은 코드입니다.

    const NodeMailer = require("nodemailer");
    const AdmZip = require("adm-zip");
    
    const createSampleZip = () => {
      const zip = new AdmZip();
    
      zip.addFile("file1.txt", Buffer.from("content of file 1"));
      zip.addFile("file2.txt", Buffer.from("content of file 2"));
    
      return zip.toBuffer();
    };
    
    const sendEmail = () => {
      var sender = NodeMailer.createTransport({
        host: "email-smtp.eu-central-1.amazonaws.com",
        port: 587,
        secure: false, // upgrade later with STARTTLS
        auth: {
          user: "<<ses-smtp-username>>",
          pass: "<<ses-smtp-password>>",
        },
      });
    
      var mail = {
        from: "[email protected]",
        to: "[email protected]",
        subject: "test email with attachment",
        text: "mail body text with attachment",
        html: "<h1>mail body in html with attachment</h1>",
        // More options regarding attachment here: https://nodemailer.com/message/attachments/
        attachments: [
          {
            filename: "zipfile.zip",
            content: createSampleZip(),
          },
        ],
      };
    
      console.log("starting to send email");
      sender.sendMail(mail, function (error, info) {
        if (error) {
          console.log(error);
        } else {
          console.log("Email sent successfully: " + info.response);
        }
      });
    };
    
    sendEmail();
    

    좋은 웹페이지 즐겨찾기