node.js 와 cafe24 smtp 활용해서 자동 메일 보내기 / nodemailer 활용

이건개발·2024년 8월 6일
1

지난번에 안되서 c# 으로 구현한 글을 작성했었는데요
node.js 로 성공했습니다.

c# 돌릴 서버 구해야하나 했는데 없어도 되는군요
다행

cafe24 는 낮은 보안 이라 옵션을 좀 넣어야합니다.

메일 계정 세팅

메일 서비스를 구입합니다. 3개짜리가 1년에 몇만원 했던거 같군요

  • 중요: 메일 서비스를 구입하던 계정이 관리자 계정이 됩니다.

웹페이지가 2개가 있습니다.

  • 관리자 페이지
    - 관리자 계정으로 로그인합니다.
    • 메일 게정들을 추가 수정 삭제 할 수 있습니다.
  • 웹메일 페이지
    - 생성한 메일 계정으로 로그인 할 수 있습니다.
    • 네이버 메일 비슷한 UI 가 뜹니다.
    • POP3/SMTP 설정이 가능합니다.
      • 코드로 메일 보내야하니까 이걸 활성화 해야합니다.
  1. 관리자 페이지로 들어가 계정을 생성합니다.
    • 보안에 취약한 방법으로 보내니까 이 계정으로 어딘가에 가입하지 마세요.
    • 메일 아이디 암호가 개발자들끼리는 공유되어야하니 아이디도 이상한 이름으로 만드세요 no-repl-email 보통 이런이름을 씁니다.
  2. 웹메일에 접속
  3. 외부 메일 설정 (좌측 하단)
  4. POP3 / SMTP 사용 설정
  5. POP3 연결 - 사용함, SMPT 연결 - 사용함 으로 설정
  6. 아래쪽에 SMTP 서버 주소와 포트 번호 메모해 둡니다.

node 모듈 설치

npm i nodemailer
npm i -D @types/nodemailer

@types/nodemailer 이거는 typescript 사용자만 필요
자동완성 때문에 씁니다.

코드

import nodemailer from "nodemailer";

export async function email_send() {
  const mymail = get_config().mymail;

  const transporter = nodemailer.createTransport({
    host: SMTP 주소, // 예) smtp.cafe24.com
    port: SMTP 포트 번호, // 예) 123
    secure: false,		// 보안 연결 아니고
    ignoreTLS: true,	// TLS 무시 하기
    auth: {
      user: "~~~@~~~.cafe24.com", // @ 가 들어가는 전체 주소
      pass: "암호",
    },
  });

  const options = {
    from: "보내느 사람 메일 주소", // 존재하지 않는 메일 주소라도 괜찮습니다.
    to: "받을 메일 주소",
    subject: "제목이야",
    text: "내용이야!",     // text 나 html 둘중하나로 쓰세요
    html: "html 형식으로"  // html 형식의 본문을 쓰고 싶다면 이거
  };

  try {
    const result = await transporter.sendMail(options);
    console.log("email_send ok", result);
  } catch (e) {
    console.log("email_send ng", e);
  }
}

계정엔 아이디@주소 형식의 풀네임이 들어가야합니다.

profile
게임 개발 / 웹 개발 / 주식 투자 / 은퇴자 / 클라우드타입 / 파이어베이스 / 수퍼베이스 / 유니티

0개의 댓글