mirror of
https://github.com/strapi/strapi.git
synced 2025-07-07 09:02:42 +00:00

Email plugin now functions more like the upload plugin. Users can go to the plugins page, click on the settings cog for the email, and switch between providers or change settings. The default provider is strapi-email-sendmail. Extra providers can be added by installing strapi-email-mailgun or strapi-email-sendgrid.
69 lines
1.6 KiB
JavaScript
69 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Email.js controller
|
|
*
|
|
* @description: A set of functions called "actions" of the `email` plugin.
|
|
*/
|
|
|
|
const _ = require('lodash');
|
|
|
|
module.exports = {
|
|
send: async (ctx) => {
|
|
// Retrieve provider configuration.
|
|
const config = await strapi.store({
|
|
environment: strapi.config.environment,
|
|
type: 'plugin',
|
|
name: 'email'
|
|
}).get({ key: 'provider' });
|
|
|
|
// Verify if the file email is enable.
|
|
if (config.enabled === false) {
|
|
strapi.log.error('Email is disabled');
|
|
return ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: 'Email.status.disabled' }] }] : 'Emailis disabled');
|
|
}
|
|
|
|
// Something is wrong
|
|
if (ctx.status === 400) {
|
|
return;
|
|
}
|
|
|
|
let options = ctx.request.body;
|
|
|
|
await strapi.plugins.email.services.send(options, config);
|
|
|
|
// Send 200 `ok`
|
|
ctx.send({});
|
|
},
|
|
|
|
getEnvironments: async (ctx) => {
|
|
const environments = _.map(_.keys(strapi.config.environments), environment => {
|
|
return {
|
|
name: environment,
|
|
active: (strapi.config.environment === environment)
|
|
};
|
|
});
|
|
|
|
ctx.send({ environments });
|
|
},
|
|
|
|
getSettings: async (ctx) => {
|
|
let config = await strapi.plugins.email.services.email.getProviderConfig(ctx.params.environment);
|
|
|
|
ctx.send({
|
|
providers: strapi.plugins.email.config.providers,
|
|
config
|
|
});
|
|
},
|
|
|
|
updateSettings: async (ctx) => {
|
|
await strapi.store({
|
|
environment: ctx.params.environment,
|
|
type: 'plugin',
|
|
name: 'email'
|
|
}).set({key: 'provider', value: ctx.request.body});
|
|
|
|
ctx.send({ok: true});
|
|
},
|
|
};
|