From ce3dcc0ef252a6af9a112a0ab128b92827bbdc58 Mon Sep 17 00:00:00 2001 From: ludovicGendre Date: Fri, 21 Jan 2022 10:02:26 +0100 Subject: [PATCH] feat: connect gmail limals --- .env | 3 +++ package-lock.json | 31 +++++++++++++++++++++++++++++++ package.json | 2 ++ src/email/email.module.ts | 9 +++++++++ src/email/email.service.ts | 22 ++++++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 src/email/email.module.ts create mode 100644 src/email/email.service.ts diff --git a/.env b/.env index b61824e..7aa2465 100644 --- a/.env +++ b/.env @@ -7,3 +7,6 @@ DATABASE_URL="postgresql://postgres:9fgJYRt11rz8OfL6ftw3cnTU9Ccyb98CGuSWYaTfShwCUIUn0E0EUQHgfqyQSMEw@localhost:5432/limals" JWT_SECRET="Y89kGTFgNXPvkzapJyV3spBZbFtgddN4" SALT="EAsCKIFVCV5CcfJc7M24Zgegy0j9zEuu" +EMAIL_SERVICE="gmail" +EMAIL_USER="rencontres.limals@gmail.com" +EMAIL_PASSWORD="Secret00" diff --git a/package-lock.json b/package-lock.json index 9f23c24..54764ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@nestjs/swagger": "^5.1.5", "@prisma/client": "^3.8.1", "@types/faker": "^5.5.9", + "@types/nodemailer": "^6.4.4", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", "concurrently": "^6.4.0", @@ -30,6 +31,7 @@ "image-to-base64": "^2.2.0", "image-uploader": "^2.0.2", "multer": "^1.4.4", + "nodemailer": "^6.7.2", "passport-jwt": "^4.0.0", "pg": "^8.7.1", "reflect-metadata": "^0.1.13", @@ -2299,6 +2301,14 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", "integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng==" }, + "node_modules/@types/nodemailer": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.4.tgz", + "integrity": "sha512-Ksw4t7iliXeYGvIQcSIgWQ5BLuC/mljIEbjf615svhZL10PE9t+ei8O9gDaD3FPCasUJn9KTLwz2JFJyiiyuqw==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -8979,6 +8989,14 @@ "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, + "node_modules/nodemailer": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz", + "integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -14361,6 +14379,14 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.19.tgz", "integrity": "sha512-BPAcfDPoHlRQNKktbsbnpACGdypPFBuX4xQlsWDE7B8XXcfII+SpOLay3/qZmCLb39kV5S1RTYwXdkx2lwLYng==" }, + "@types/nodemailer": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-6.4.4.tgz", + "integrity": "sha512-Ksw4t7iliXeYGvIQcSIgWQ5BLuC/mljIEbjf615svhZL10PE9t+ei8O9gDaD3FPCasUJn9KTLwz2JFJyiiyuqw==", + "requires": { + "@types/node": "*" + } + }, "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -19469,6 +19495,11 @@ "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, + "nodemailer": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.7.2.tgz", + "integrity": "sha512-Dz7zVwlef4k5R71fdmxwR8Q39fiboGbu3xgswkzGwczUfjp873rVxt1O46+Fh0j1ORnAC6L9+heI8uUpO6DT7Q==" + }, "normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", diff --git a/package.json b/package.json index 9a232f1..6038f19 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@nestjs/swagger": "^5.1.5", "@prisma/client": "^3.8.1", "@types/faker": "^5.5.9", + "@types/nodemailer": "^6.4.4", "class-transformer": "^0.5.1", "class-validator": "^0.13.2", "concurrently": "^6.4.0", @@ -51,6 +52,7 @@ "image-to-base64": "^2.2.0", "image-uploader": "^2.0.2", "multer": "^1.4.4", + "nodemailer": "^6.7.2", "passport-jwt": "^4.0.0", "pg": "^8.7.1", "reflect-metadata": "^0.1.13", diff --git a/src/email/email.module.ts b/src/email/email.module.ts new file mode 100644 index 0000000..bffdec8 --- /dev/null +++ b/src/email/email.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import EmailService from './email.service'; + +@Module({ + controllers: [], + providers: [EmailService], + exports: [EmailService], +}) +export class EmailModule {} diff --git a/src/email/email.service.ts b/src/email/email.service.ts new file mode 100644 index 0000000..710ca28 --- /dev/null +++ b/src/email/email.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@nestjs/common'; +import { createTransport } from 'nodemailer'; +import * as Mail from 'nodemailer/lib/mailer'; + +@Injectable() +export default class EmailService { + private nodemailerTransport: Mail; + + constructor() { + this.nodemailerTransport = createTransport({ + service: process.env.EMAIL_SERVICE, + auth: { + user: process.env.EMAIL_USER, + pass: process.env.EMAIL_PASSWORD, + }, + }); + } + + sendMail(options: Mail.Options) { + return this.nodemailerTransport.sendMail(options); + } +}