UNPKG

strapi-provider-email-gmail-oauth2-image-base64

Version:

Nodemailer Gmail provider with 3LO OAuth2 for Strapi Email with support Base64 image in html content

64 lines (56 loc) 1.81 kB
"use strict"; /** * Module dependencies */ /* eslint-disable import/no-unresolved */ /* eslint-disable prefer-template */ // Public node modules. const nodemailer = require("nodemailer"); const { removeUndefined } = require('strapi-utils'); const inlineBase64 = require('nodemailer-plugin-inline-base64'); /* eslint-disable no-unused-vars */ module.exports = { init: (providerOptions = {}, settings = {}) => { const transporter = nodemailer.createTransport({ service: "Gmail", auth: { type: "OAuth2", user: providerOptions.username, clientId: providerOptions.clientId, clientSecret: providerOptions.clientSecret, refreshToken: providerOptions.refreshToken, accessToken: providerOptions.accessToken, expires: 1484314697598 }, }); return { send: options => { return new Promise((resolve, reject) => { const { from, to, cc, bcc, replyTo, subject, text, html, hasBase64Image, ...rest } = options; let msg = { from: from || settings.defaultFrom, to, cc, bcc, replyTo: replyTo || settings.defaultReplyTo, subject, text, html, hasBase64Image: hasBase64Image || true, ...rest, }; if (hasBase64Image) { transporter.use('compile', inlineBase64({cidPrefix: 'prefix_'})); } transporter.sendMail(removeUndefined(msg), function(err) { if (err) { reject([{ messages: [{ id: 'Auth.form.error.email.invalid' }] }]); } else { resolve(); } }); }); }, }; }, };