Jimmy Wärting ae3628fd0c remove import
2022-11-24 18:03:31 +01:00

69 lines
1.7 KiB
JavaScript

'use strict';
const { pick } = require('lodash/fp');
const { ApplicationError } = require('@strapi/utils').errors;
/**
* Email.js controller
*
* @description: A set of functions called "actions" of the `email` plugin.
*/
module.exports = {
async send(ctx) {
const options = ctx.request.body;
try {
await strapi.plugin('email').service('email').send(options);
} catch (e) {
if (e.statusCode === 400) {
throw new ApplicationError(e.message);
} else {
throw new Error(`Couldn't send email: ${e.message}.`);
}
}
// Send 200 `ok`
ctx.send({});
},
async test(ctx) {
const { to } = ctx.request.body;
if (!to) {
throw new ApplicationError('No recipient(s) are given');
}
const email = {
to,
subject: `Strapi test mail to: ${to}`,
text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(
'plugin.email.provider'
)} provider. \r\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,
};
try {
await strapi.plugin('email').service('email').send(email);
} catch (e) {
if (e.statusCode === 400) {
throw new ApplicationError(e.message);
} else {
throw new Error(`Couldn't send test email: ${e.message}.`);
}
}
// Send 200 `ok`
ctx.send({});
},
async getSettings(ctx) {
const config = strapi.plugin('email').service('email').getProviderSettings();
ctx.send({
config: pick(
['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],
config
),
});
},
};