Computer >> 컴퓨터 >  >> 소프트웨어 >> 우편

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

Nodemailer는 서버에서 쉽게 이메일을 보낼 수 있는 Node.js 모듈입니다. 사용자와 소통하고 싶든 문제가 발생했을 때 스스로에게 알리고 싶든 메일을 통한 옵션 중 하나입니다.

베어본 형태로 Nodemailer를 사용하는 방법을 설명하는 많은 기사가 있지만 이 기사는 그 중 하나가 아닙니다. 여기에서는 Nodemailer와 Gmail을 사용하여 Node.js 백엔드에서 이메일을 보내는 가장 일반적인 방법을 보여드리겠습니다.

Nodemailer를 시작하는 방법

먼저 Express를 사용하여 Node.js 상용구를 설정해야 합니다. Node 및 npm이 설치되어 있는지 확인하려면 다음 명령을 실행할 수 있습니다.

node -v 
npm -v

이 두 명령 모두 버전이 표시되면 계속 진행할 수 있습니다. 그렇지 않으면 누락된 것을 설치하십시오.

프로젝트에 대한 디렉터리를 만듭니다. nodemailerProject를 사용하겠습니다. .

mkdir nodemailerProject

새로 생성된 디렉토리로 이동하여 실행

npm init

packakge.json으로 프로젝트를 초기화합니다. 파일.

다음으로 다음을 사용하여 Express를 설치해야 합니다.

npm install express

진입점으로 지정한 파일(기본값은 index.js)에 따라 파일을 열고 다음 코드를 붙여넣습니다.

const express = require('express')
const app = express()
const port = 3000


app.listen(port, () => {
  console.log(`nodemailerProject is listening at https://localhost:${port}`)
})
index.js

위는 Express를 사용하여 간단한 서버를 시작하는 데 필요한 것입니다. 다음을 실행하여 제대로 작동하는지 확인할 수 있습니다.

node index.js

노드메일러 설치 방법

다음 명령을 사용하여 nodemailer를 설치하십시오:

npm install nodemailer

Nodemailer의 API는 매우 간단하며 다음을 수행해야 합니다.

  1. 수송기 만들기 개체
  2. MailOptions 만들기 개체
  3. Transporter.sendMail 사용 방법

Transporter 객체를 생성하기 위해 다음을 수행합니다:

let transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        type: 'OAuth2',
        user: process.env.MAIL_USERNAME,
        pass: process.env.MAIL_PASSWORD,
        clientId: process.env.OAUTH_CLIENTID,
        clientSecret: process.env.OAUTH_CLIENT_SECRET,
        refreshToken: process.env.OAUTH_REFRESH_TOKEN
      }
    });
✋ 자신의 gmail 계정에 대한 사용자 인증 정보인 사용자 키와 패스 키를 제외하고 OAuth 설정 후 나머지 3개의 키를 가져와야 하므로 주의하세요.

이 기사의 시작 부분에서 언급했듯이 메일 전송 요구 사항에 Gmail을 사용할 것입니다. 짐작할 수 있듯이 Gmail은 사용자 계정에서 보낸 메일과 관련하여 높은 수준의 보안을 제공합니다.

이 장애물을 극복할 수 있는 여러 가지 방법이 있으며(어떤 것은 다른 것보다 낫습니다) Google Cloud Platform에서 프로젝트를 설정해야 하는 방법을 선택할 것입니다. . Gmail에서 OAuth 보안을 위한 자격 증명을 사용하려면 이 작업을 수행해야 합니다.

nodemailer와 함께 Gmail을 사용할 때의 복잡성에 대해 자세히 알아보려면 여기로 이동하십시오.

다음 단계에서는 코딩 대신 몇 가지 구성이 필요하므로 각오하십시오.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법
사진:Daniel McCullough / Unsplash

Google 클라우드 플랫폼 구성

Google Cloud Platform 계정이 없는 경우 필수 조건으로 계정을 설정해야 합니다. 설정이 완료되면 왼쪽 상단의 드롭다운 메뉴를 클릭하여 새 프로젝트를 만드세요.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

새 프로젝트 옵션 선택:

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

다음 창에서 프로젝트 이름을 지정해야 합니다. 원하는 것을 선택하지만 NodemailerProject 없이 계속 진행합니다. 이름. 위치 속성의 경우 조직 없음으로 둘 수 있습니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

프로젝트를 설정하는 데 몇 초가 걸릴 수 있지만 그 후에는 다음 화면을 볼 수 있습니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

왼쪽 상단 모서리에 있는 세 개의 점선을 클릭하여 탐색 메뉴를 열고 API 및 서비스:를 선택합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

Nodemailer와 Gmail을 사용하려면 OAuth2를 사용해야 합니다. OAuth가 익숙하지 않다면 인증을 위한 프로토콜입니다. 필요하지 않기 때문에 여기에서 구체적으로 설명하지 않겠지만, 이에 대해 더 알고 싶다면 여기로 가십시오.

먼저 OAuth 동의 화면을 구성해야 합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

G-Suite 회원이 아닌 경우 사용할 수 있는 유일한 옵션은 외부 사용자 유형입니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

생성을 클릭하면 다음 화면에서 애플리케이션 정보(저희 서버)를 입력해야 합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

사용자 지원 이메일 필드와 개발자 연락처 정보 필드에 이메일을 입력합니다. 저장하고 계속하기를 클릭하면 이 구성의 범위 단계로 이동합니다. 이 단계는 우리와 관련이 없으므로 건너뛰고 테스트 사용자 단계로 이동하십시오.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

여기에서 자신을 사용자로 추가하고 저장하고 계속하기를 클릭하십시오.

OAuth 설정을 구성하는 방법

이 단계에서는 Nodemailer와 함께 사용할 OAuth 자격 증명을 만듭니다. OAuth 동의 화면 위의 자격 증명 탭으로 이동합니다. 자격 증명 생성 텍스트가 있는 더하기(➕) 기호를 클릭합니다. OAuth 클라이언트 ID를 선택합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

애플리케이션 유형 드롭다운 메뉴에서 웹 애플리케이션을 선택합니다. :

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

승인된 리디렉션 URI 섹션에서 OAuth2 Playground(https://developers.google.com/oauthplayground)를 추가해야 이 문서의 시작 부분에서 언급한 키 중 하나를 얻는 데 사용할 것입니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

생성을 클릭하면 클라이언트 ID와 클라이언트 암호가 표시됩니다. 이것은 자신에게만 보관하고 어떤 방식, 모양 또는 형태로든 노출하지 마십시오. .

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법
사진 제공:Power Lai / Unsplash

OAuth 갱신 토큰 받기

Nodemailer의 Transporter 객체 내에서 사용할 새로 고침 토큰을 얻으려면 OAuth2 Playground로 이동해야 합니다. 우리는 초기 단계에서 이 특정 목적을 위해 이 URI를 승인했습니다.

1. 오른쪽의 톱니바퀴 아이콘(OAuth2 구성)을 클릭하고 자신의 OAuth2 자격 증명을 사용하려면 확인란을 선택합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

2. 웹사이트의 왼쪽을 보면 서비스 목록이 표시됩니다. Gmail API v1이 보일 때까지 아래로 스크롤합니다.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

3. API 승인을 클릭합니다.

Gmail 계정에 로그인할 수 있는 화면이 표시됩니다. 테스트 사용자로 나열한 사용자를 선택하십시오.

4. 다음 화면에서 Google이 아직 이 신청서를 확인하지 않았음을 알 수 있지만 확인을 위해 제출하지 않았기 때문에 괜찮습니다. 계속을 클릭하세요.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

5. 다음 화면에서 프로젝트에 Gmail 계정과 상호 작용할 수 있는 권한을 부여하라는 메시지가 표시됩니다. 그렇게 하십시오.

Nodemailer를 사용하여 Node.js 서버에서 이메일을 보내는 방법

6. 완료되면 OAuth Playground로 다시 리디렉션되며 왼쪽 메뉴에 인증 코드가 있는 것을 볼 수 있습니다. 인증 코드를 토큰으로 교환이라고 표시된 파란색 버튼을 클릭합니다. .

이제 새로 고침 토큰 및 액세스 토큰 필드가 채워집니다.

서버로 돌아가기

이러한 모든 구성을 수행한 후에는 애플리케이션으로 돌아가 해당 모든 데이터를 트랜스포터 생성에 입력할 수 있습니다. 모든 자격 증명을 비공개로 유지하려면 dotenv 패키지를 사용할 수 있습니다. 생성할 .env 파일도 .gitignore에 추가하는 것을 잊지 마십시오.

이제 우리는 다음을 갖게 되었습니다:

let transporter = nodemailer.createTransport({
      service: 'gmail',
      auth: {
        type: 'OAuth2',
        user: process.env.MAIL_USERNAME,
        pass: process.env.MAIL_PASSWORD,
        clientId: process.env.OAUTH_CLIENTID,
        clientSecret: process.env.OAUTH_CLIENT_SECRET,
        refreshToken: process.env.OAUTH_REFRESH_TOKEN
      }
    });

다음으로 이메일을 보낼 위치와 데이터에 대한 세부 정보를 포함하는 mailOptions 개체를 만듭니다.

let mailOptions = {
      from: tomerpacific@gmail.com,
      to: tomerpacific@gmail.com,
      subject: 'Nodemailer Project',
      text: 'Hi from your nodemailer project'
    };

이 개체에는 더 많은 필드와 여러 수신자가 있을 수 있지만 여기서는 다루지 않습니다.

마지막으로 sendMail 메서드를 사용합니다.

transporter.sendMail(mailOptions, function(err, data) {
      if (err) {
        console.log("Error " + err);
      } else {
        console.log("Email sent successfully");
      }
    });

애플리케이션을 실행하면 받은 편지함이 새 이메일로 채워지는 것을 볼 수 있습니다.

이 기사는 Nodemailer를 사용하여 만든 프로젝트에서 영감을 받았습니다. 확인하고 싶으시면 여기로 가세요.