-
# 3.3 Nodemailer를 이용한 sendMail 기능인스타그램 클론 코딩/#3 GraphQL API 2019. 12. 20. 18:33
.env 설정 다시
import dotenv from "dotenv"; import path from "path"; dotenv.config({ path: path.resolve(__dirname, ".env") }); import { GraphQLServer } from "graphql-yoga"; import logger from "morgan"; import schema from "./schema"; const PORT = process.env.PORT || 4000; const server = new GraphQLServer({ schema }); server.express.use(logger("dev")); server.start({ port: PORT }, () => console.log(`✅ Server running on port ${PORT}`) ); // import dotenv from "dotenv"; // import path from "path"; // dotenv.config({ path: path.resolve(__dirname, ".env") }); // 등등 추가됨 이유는: 앞전에는 .env파일의 PORT를 못불러오고있었음 // 확인은 console.log(process.env.PORT);
Nodemailer
- nodemailer를 활용한 비밀코드 메일에 전송
(필요한것은 sendgrid 및 sendgrid의 기능인 sendgrid transport)
- yarn add nodemailer
- sendgrid 홈페이지에서 회원가입 및 로그인해줌
- yarn add nodemailer-sendgrid-transport (sendgrid transport를 사용하기위해)
다음 아래는 사용된 코드들 정리
- utils.js
import dotenv from "dotenv"; import path from "path"; dotenv.config({ path: path.resolve(__dirname, ".env") }); import { adjectives, nouns } from "./words"; import nodemailer from "nodemailer"; import sgTransport from "nodemailer-sendgrid-transport"; export const generateSecret = () => { const randomNumber = Math.floor(Math.random() * adjectives.length); return `${adjectives[randomNumber]} ${nouns[randomNumber]}`; }; const sendMail = email => { const options = { auth: { api_user: process.env.SENDGRID_USERNAME, api_key: process.env.SENDGRID_PASSWORD } }; const client = nodemailer.createTransport(sgTransport(options)); return client.sendMail(email); }; export const sendSecretMail = (address, secret) => { const email = { from: "wndtlr@prismagram.com", to: address, subject: "🔒Login Secret for Prismagram🔒", html: `Hello! Your login secret it ${secret}.<br/>Copy paste on the app/website to log in` }; return sendMail(email); };
- .env
PORT = 4000 SENDGRID_USERNAME = "wjdwndtlr" SENDGRID_PASSWORD = ""
- server.js
import dotenv from "dotenv"; import path from "path"; dotenv.config({ path: path.resolve(__dirname, ".env") }); import { GraphQLServer } from "graphql-yoga"; import logger from "morgan"; import schema from "./schema"; import { sendSecretMail } from "./utils"; sendSecretMail("wndtlr1024@gmail.com", "HELLO!"); const PORT = process.env.PORT || 4000; const server = new GraphQLServer({ schema }); server.express.use(logger("dev")); server.start({ port: PORT }, () => console.log(`✅ Server running on port ${PORT}`) );
- 결과물
'인스타그램 클론 코딩 > #3 GraphQL API' 카테고리의 다른 글
#3.4~3.6 passport JWT (0) 2019.12.22 #3.2 requestSecret Resolver (0) 2019.12.20 #3.1 계정 확인자 만들기 (Create Account Resolver) (0) 2019.12.18