diff --git a/package-lock.json b/package-lock.json index 9cbd9ccb691588704b567e79dd12534926bcd2d6..f17f7e9a4f8289237269c9e65597749e5ecbd160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2711,8 +2711,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "at-least-node": { "version": "1.0.0", @@ -3724,7 +3723,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -4726,8 +4724,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -6009,13 +6006,12 @@ } }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", + "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, @@ -11360,6 +11356,17 @@ "uuid": "^3.3.2" }, "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", diff --git a/package.json b/package.json index 35186b8b3707f6b468d07db0d8bcabf1f294e6b1..939149dd38dac70d8bc804a2f26b17a844f6663f 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "class-validator": "^0.12.2", "dotenv": "^8.2.0", "ejs": "^3.1.5", + "form-data": "^3.0.0", "luxon": "^1.25.0", "mongoose": "^5.10.15", "passport": "^0.4.1", diff --git a/src/mailer/mailer.service.ts b/src/mailer/mailer.service.ts index 0862f91eec026235b6774ee6dee91977a0cde77d..5dbe73f2fbce258441e1695bf88d9caf8dd50387 100644 --- a/src/mailer/mailer.service.ts +++ b/src/mailer/mailer.service.ts @@ -2,6 +2,7 @@ import { HttpService, Injectable, Logger } from '@nestjs/common'; import { AxiosResponse } from 'axios'; import * as fs from 'fs'; import * as path from 'path'; +import * as FormData from 'form-data'; import { ConfigurationService } from '../configuration/configuration.service'; @Injectable() export class MailerService { @@ -20,22 +21,27 @@ export class MailerService { * @param {string} html * @param {string} text */ - public send(to: string, subject: string, html: string): Promise<AxiosResponse<any>> { + public async send(to: string, subject: string, html: string): Promise<AxiosResponse<any>> { + const formData = new FormData(); const data = JSON.stringify({ - from: this.config.from, + // eslint-disable-next-line camelcase + from_email: this.config.from, // eslint-disable-next-line camelcase from_name: this.config.from_name, - to: to, + to: [{ email: to }], subject: subject, content: html, }); + formData.append('metadata', data); + const contentLength = formData.getLengthSync(); Logger.log(`Send mail : ${subject}`, 'Mailer'); return new Promise((resolve, reject) => { this.httpService - .post(process.env.MAIL_URL, data, { + .post(process.env.MAIL_URL, formData, { headers: { - 'Content-Type': 'application/json', + 'Content-Length': contentLength, Authorization: 'Bearer ' + process.env.MAIL_TOKEN, + ...formData.getHeaders(), }, }) .subscribe(