{"version":3,"file":"email.mjs","sources":["../../../server/src/controllers/email.ts"],"sourcesContent":["import { pick } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type Koa from 'koa';\nimport type {} from 'koa-body';\nimport type { EmailConfig, SendOptions } from '../types';\n\nconst { ApplicationError } = errors;\n\n/**\n * Email.js controller\n *\n * @description: A set of functions called \"actions\" of the `email` plugin.\n */\nconst emailController = {\n async send(ctx: Koa.Context) {\n const options = ctx.request.body as SendOptions;\n\n try {\n await strapi.plugin('email').service('email').send(options);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async test(ctx: Koa.Context) {\n const { to } = ctx.request.body as Pick;\n\n if (!to) {\n throw new ApplicationError('No recipient(s) are given');\n }\n\n const email: SendOptions = {\n to,\n subject: `Strapi test mail to: ${to}`,\n text: `Great! You have correctly configured the Strapi email plugin with the ${strapi.config.get(\n 'plugin::email.provider'\n )} provider. \\r\\nFor documentation on how to use the email plugin checkout: https://docs.strapi.io/developer-docs/latest/plugins/email.html`,\n };\n\n try {\n await strapi.plugin('email').service('email').send(email);\n } catch (error) {\n if (error instanceof Error) {\n if ('statusCode' in error && error.statusCode === 400) {\n throw new ApplicationError(error.message);\n } else {\n throw new Error(`Couldn't send test email: ${error.message}.`);\n }\n }\n }\n\n // Send 200 `ok`\n ctx.send({});\n },\n\n async getSettings(ctx: Koa.Context) {\n const config: EmailConfig = strapi.plugin('email').service('email').getProviderSettings();\n const provider = strapi.plugin('email').provider;\n\n // Check if provider supports verify method\n const supportsVerify = typeof provider?.verify === 'function';\n\n // Get capabilities from provider (e.g. SMTP host, auth type, features)\n const capabilities =\n typeof provider?.getCapabilities === 'function' ? provider.getCapabilities() : undefined;\n\n // Get pool idle status if provider supports it\n const isIdle = typeof provider?.isIdle === 'function' ? provider.isIdle() : undefined;\n\n ctx.send({\n config: pick(\n ['provider', 'settings.defaultFrom', 'settings.defaultReplyTo', 'settings.testAddress'],\n config\n ),\n supportsVerify,\n ...(capabilities ? { capabilities } : {}),\n ...(isIdle !== undefined ? { isIdle } : {}),\n });\n },\n\n async verify(ctx: Koa.Context) {\n const provider = strapi.plugin('email').provider;\n\n if (!provider?.verify || typeof provider.verify !== 'function') {\n throw new ApplicationError('This email provider does not support connection verification');\n }\n\n try {\n await provider.verify();\n ctx.send({ success: true, message: 'SMTP connection verified successfully' });\n } catch (error) {\n if (error instanceof Error) {\n throw new ApplicationError(`Connection verification failed: ${error.message}`);\n }\n throw new ApplicationError('Connection verification failed');\n }\n },\n};\n\nexport default emailController;\n"],"names":["ApplicationError","errors","emailController","send","ctx","options","request","body","strapi","plugin","service","error","Error","statusCode","message","test","to","email","subject","text","config","get","getSettings","getProviderSettings","provider","supportsVerify","verify","capabilities","getCapabilities","undefined","isIdle","pick","success"],"mappings":"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"}