일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 5.3.8 Modifying Queries
- 우분투 시간 변경
- 문자열 인터폴레이션
- 코딩 어?
- 객체를 배열로
- ${변수}
- Robo3T 글씨체 변경
- 깃 토큰 만료
- 프론트엔드 스쿨
- @Moditying @Query
- 레디스 확인
- 객체의 밸류값만 찾기
- 객체의키값만 찾기
- findIndex()
- Robo3T 폰트 키우기
- 시퀄 문법
- ...점점점문법
- 스프링 데이타 JPA
- lastIndexOf()
- ubuntu타임존
- 배열을 객체로
- sql like연산자
- Robo3T 폰트변경
- indexOf()
- sql 문자열 패턴 검색
- js 문자열을 문자배열로
- search()
- Robo3T 글씨키우기
- 리엑트블로거
- 가상컴퓨터마법사
- Today
- Total
코딩기록
다시 10일차(금) 업무 + 이메일인증2(1차성공, 모듈x) 본문
어제 nodemailer를 커스터마이즈해서 모듈로 만들었고 회원가입인증, 비번찾기등 필요한 api안에 넣어서 사용하면 된다.
인증번호를 디비에 저장하되 인증멜을 여러번 요청할 수 있으니 값이 계속 덮어지도록 해야한다.
오늘 할 일
1. 이메일 인증 시작(nodemailer, aws)
nodemailer모듈 이용
1. mailSender모듈 만들기
2. 디비에 값이 덮어지게 생성하기
3. 필요한 api에 모듈 불러서 쓰기
참고
노드메일러공식
https://nodemailer.com/about/
// * 리엑트로 블로그만들기 깃 - https://github.com/sejun3278/sejun3278_react_29
오늘 배운 것
nodemailer를 활용해 커스터마이즈한 모듈을 만든후 내가 원하는곳에 이 기능을 쓰는게 목푠데 우선 노드모듈을 활용해 메일 보내기만 성공이다.
1. nodemailer 모듈 설치
npm i nodemailer --save
2. mailsender.js
const nodemailer = require('nodemailer');
const email = {
service: 'Naver',
host: 'smtp.naver.com',
port: 587,
secure: false,
auth: {
user: "보내는이 멜주소",
pass: "보내는이 멜 비번",
}
}
const send = async (data) => {
nodemailer.createTransport(email).sendMail(data, function (err, info) {
if(err) {
console.log(err);
} else {
console.log(info);
return info.response;
}
});
}
const content = {
from: "보내는이 멜주소",
to: "받는이 멜주소",
subject: "nodemailer 테스트 성공",
text: "메일보내기 성공입니다❤💜💛💚"
};
send(content);
3. 실행
node mailSender.js
❗❗해결해야 할 것
1. dotenv로 중요 코드 보안강화 하기
const email = {
service: 'Naver',
host: 'smtp.naver.com',
port: 587,
secure: false,
auth: {
user: process.env.ADMIN_MAIL,
pass: process.env.ADMIN_PASS,
}
}
이렇게 보내는 이멜과 비번을 .env파일에 숨겨서 실행하면 오류가 뜬다.
Error: Missing credentials for "PLAIN"
at SMTPConnection._formatError (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:784:19)
at SMTPConnection.login (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:438:38) at C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-transport\index.js:271:32
at SMTPConnection.<anonymous> (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:209:17)
at Object.onceWrapper (node:events:509:28)
at SMTPConnection.emit (node:events:390:28)
at SMTPConnection._actionEHLO (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:1319:14)
at SMTPConnection._processResponse (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:947:20)
at SMTPConnection._onData (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:749:14)
at TLSSocket.SMTPConnection._onSocketData (C:\Users\userpc\Desktop\prac_mail\node_modules\nodemailer\lib\smtp-connection\index.js:189:44) {
code: 'EAUTH',
command: 'API'
}
이걸 해결하면 우선 한단계 넘은거다.
[추가--14:49]
https://stackoverflow.com/questions/48854066/missing-credentials-for-plain-nodemailer
오류메시지 그대로 검색해서 찾았다.
[원인]
'혹시 dotenv를 안불러서(require)그런가?' 했는데 맞았다. app.js 에 설정을 해놨었는데 나는 지금 node app.js로 서버를 실행한게 아니라 바로 node mailSender.js로 실행하기때문에 주된 문제원인이 .env 파일 변수에 제대로 액세스하지 못했다는 것이었다. mailSender.js파일에 dotenv를 require해야 했다. 기초적인건데 허허허허 항상 이렇게 간단하고 기초적인 문제에 잡혀있는다
[해결]
dotenv 모듈 require하기. 1번 2번 방법중 아무거나 쓰면된다.
const nodemailer = require('nodemailer');
//dotenv모듈 require하기
// 1번
const dotenv = require('dotenv');
dotenv.config();
//2번
require('dotenv').config();
mailSender.js 전체 코드
const nodemailer = require('nodemailer');
// const dotenv = require('dotenv');
// dotenv.config();
require('dotenv').config();
const email = {
service: 'Naver',
host: 'smtp.naver.com',
port: 587,
secure: false,
auth: {
user: process.env.ADMIN_MAIL,
pass: process.env.ADMIN_PASS,
}
}
const send = async (data) => {
nodemailer.createTransport(email).sendMail(data, function (err, info) {
if(err) {
console.log(err);
} else {
console.log(info);
return info.response;
}
});
}
const content = {
from: process.env.ADMIN_MAIL,
to: "받는이 멜주소", //"" 쌍따옴표안에 적기
subject: "nodemailer 테스트 성공",
text: "메일보내기 성공입니다❤💜💛💚"
};
send(content);
*성공시 터미널 메시지
accepted: ['받는이멜주소']
envelope: { from: '보내는이 멜주소', to: [ '받는이 멜주소' ] }
참고
*유투브
https://www.youtube.com/watch?v=ezReImKeq2U
*mailtrap
https://mailtrap.io/
2. 모듈로 사용하기
오늘 미처리 및 추후 처리 업무
도커 강의 82부터
'백엔드' 카테고리의 다른 글
다시 14일차(화) 업무 + 도커 강의9 (0) | 2022.06.21 |
---|---|
다시 13일차(월) 업무 + 도커 강의8 (0) | 2022.06.20 |
다시 9일차(목) 업무 + 도커강의7 + 이메일인증1 (0) | 2022.06.16 |
다시 8일차(수) 업무 + 도커강의6 + sms3(완성 / 디비추가하기) (0) | 2022.06.15 |
다시 7일차(화) 업무 + 도커공부5 + sms2 (0) | 2022.06.14 |