일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- React
- Python
- Laravel
- nginx
- CSS
- nodejs
- polygon
- 라라벨
- 오블완
- 회고
- Remix
- threejs
- 배포
- 티스토리챌린지
- node
- Setting
- 공연티켓
- miniconda
- exceljs
- jquery
- NextJS
- nft
- metamask
- 블록체인
- PM2
- Kaikas
- Ai
- pagination
- chatGPT
- netfunnel
- Today
- Total
박주니 개발 정리
nodemailer 적용 방법 본문
1. nodemailer 공식문서에 코드를 기본 form으로 진행합니다.
"use strict";
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({
host: "smtp.forwardemail.net",
port: 465,
secure: true,
auth: {
// TODO: replace `user` and `pass` values from <https://forwardemail.net>
user: 'REPLACE-WITH-YOUR-ALIAS@YOURDOMAIN.COM',
pass: 'REPLACE-WITH-YOUR-GENERATED-PASSWORD'
}
});
// async..await is not allowed in global scope, must use a wrapper
async function main() {
// send mail with defined transport object
const info = await transporter.sendMail({
from: '"Fred Foo 👻" <foo@example.com>', // sender address
to: "bar@example.com, baz@example.com", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
//
// NOTE: You can go to https://forwardemail.net/my-account/emails to see your email delivery status and preview
// Or you can use the "preview-email" npm package to preview emails locally in browsers and iOS Simulator
// <https://github.com/forwardemail/preview-email>
//
}
main().catch(console.error);
2. form을 사용하기 전에 port 3000번 실행시 실행될 수 있게 node 환경을 만듭니다.
추가설명)
- npm i http dotenv 를 설치하고 기본적으로 서버 실행시 돌아갈 수 있게 셋팅합니다. 실행할때는 node server.js(사용자가 설정한 페이지 js)로 진행하시면 됩니다.
const http = require('http');
const dotenv = require('dotenv');
const nodemailer = require('nodemailer');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js Web Server!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
3. .env 파일을 추가한 후 user에는 사용할 gmail주소 pass는 연결한 주소에 비밀번호를 넣으시면 됩니다.
// .env 설정
user = '본인 gmail 주소'
pass = '비밀번호'
추가 설명)
연결할 때 gmail은 2차 인증이 되어 있지 않고 보안 수준이 낮은 앱이 활성화 되어있어야합니다.
만약에 2차 인증을 비활성화 되어있는데도 보안 수준이 낮은 앱이 보이지 않은 이유는 구글 내부적으로 업데이트되어서 안보이는 것이 아니라 어떤 부분이 연결되어있어서 보안 수준이 낮은 앱이 보이지 않은 것입니다.
저도 제 계정으로는 2차 인증을 여러번 비활성화하고 보안 수준이 낮은 앱이 보이기 위해 다른 방법을 시도해봤지만 안되서 구글이 업데이트 된 줄 알았는데 회사에 연결된 gmail로 확인해보니 보안 수준이 낮은 앱이 보였습니다.
계속 보안 수준이 낮은 앱이 보이지 않는다면 gmail 계정 하나를 다시 만드는 것을 추천합니다.
- 코드 적용)
const dotenv = require('dotenv');
dotenv.config();
const { user, pass } = process.env;
추가 설명)
dotenv.config()를 한다음 지금처럼 process.env로 가지고 오면 해당 .env에 설정한 user 및 pass 정보를 가지고 올 수 있습니다.
4. 기본 form에서 필요한 부분만 수정 후 서버를 실행합니다.
const http = require('http');
const dotenv = require('dotenv');
const nodemailer = require('nodemailer');
dotenv.config();
const { user, pass } = process.env;
const hostname = '127.0.0.1';
const port = 3000;
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
// TODO: replace `user` and `pass` values from <https://forwardemail.net>
user: user,
pass: pass
}
});
// async..await is not allowed in global scope, must use a wrapper
async function main() {
// send mail with defined transport object
const info = await transporter.sendMail({
from: user, // sender address
to: "보낼 이메일 주소", // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>", // html body
});
console.log("Message sent: %s", info.messageId);
}
main().catch(console.error);
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js Web Server!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
변경된 부분)
host, port, secure을 제거하고 service만 추가해서 gmail로 진행할 것이기 때문에 'gmail'로 설정합니다.
결과
추가 설명)
subject : 메일 제목
html: 메일 내용
확인하실 수 있습니다. 응용을 하실 때 이부분을 수정하시면 의도에 맞게 보내실 수 있습니다.