25 lines
9.5 KiB
JavaScript
25 lines
9.5 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "_action-browser_lib_mail_mailer_ts";
|
|
exports.ids = ["_action-browser_lib_mail_mailer_ts"];
|
|
exports.modules = {
|
|
|
|
/***/ "(action-browser)/./lib/mail/mailer.ts":
|
|
/*!****************************!*\
|
|
!*** ./lib/mail/mailer.ts ***!
|
|
\****************************/
|
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
|
|
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ sendEmail: () => (/* binding */ sendEmail)\n/* harmony export */ });\n/* harmony import */ var nodemailer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nodemailer */ \"(action-browser)/./node_modules/.pnpm/nodemailer@7.0.13/node_modules/nodemailer/lib/nodemailer.js\");\n/* harmony import */ var _lib_services_create_services_server__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/services/create-services.server */ \"(action-browser)/./lib/services/create-services.server.ts\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ \"(action-browser)/./lib/config.ts\");\n\n\n\nlet transporterInstance = null;\nfunction getTransporter() {\n if (transporterInstance) return transporterInstance;\n if (!_config__WEBPACK_IMPORTED_MODULE_2__.config.mail.host) {\n throw new Error('MAIL_HOST is not configured. Please check your environment variables.');\n }\n transporterInstance = nodemailer__WEBPACK_IMPORTED_MODULE_0__.createTransport({\n host: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.host,\n port: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.port,\n secure: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.port === 465,\n auth: {\n user: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.user,\n pass: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.pass\n }\n });\n return transporterInstance;\n}\nasync function sendEmail({ to, replyTo, subject, html }) {\n const recipients = to || _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.recipients;\n const logger = (0,_lib_services_create_services_server__WEBPACK_IMPORTED_MODULE_1__.getServerAppServices)().logger.child({\n component: 'mailer'\n });\n if (!recipients) {\n logger.error('No email recipients configured (MAIL_RECIPIENTS is empty and no \"to\" provided)', {\n subject\n });\n return {\n success: false,\n error: 'No recipients configured'\n };\n }\n if (!_config__WEBPACK_IMPORTED_MODULE_2__.config.mail.from) {\n logger.error('MAIL_FROM is not configured — cannot send email', {\n subject,\n recipients\n });\n return {\n success: false,\n error: 'MAIL_FROM is not configured'\n };\n }\n const mailOptions = {\n from: _config__WEBPACK_IMPORTED_MODULE_2__.config.mail.from,\n to: recipients,\n replyTo,\n subject,\n html\n };\n try {\n const info = await getTransporter().sendMail(mailOptions);\n logger.info('Email sent successfully', {\n messageId: info.messageId,\n subject,\n recipients\n });\n return {\n success: true,\n messageId: info.messageId\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n logger.error('Error sending email', {\n error: errorMsg,\n subject,\n recipients\n });\n return {\n success: false,\n error: errorMsg\n };\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL2xpYi9tYWlsL21haWxlci50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW9DO0FBQ3lDO0FBQzFDO0FBRW5DLElBQUlHLHNCQUFxRDtBQUV6RCxTQUFTQztJQUNQLElBQUlELHFCQUFxQixPQUFPQTtJQUVoQyxJQUFJLENBQUNELDJDQUFNQSxDQUFDRyxJQUFJLENBQUNDLElBQUksRUFBRTtRQUNyQixNQUFNLElBQUlDLE1BQU07SUFDbEI7SUFFQUosc0JBQXNCSCx1REFBMEIsQ0FBQztRQUMvQ00sTUFBTUosMkNBQU1BLENBQUNHLElBQUksQ0FBQ0MsSUFBSTtRQUN0QkcsTUFBTVAsMkNBQU1BLENBQUNHLElBQUksQ0FBQ0ksSUFBSTtRQUN0QkMsUUFBUVIsMkNBQU1BLENBQUNHLElBQUksQ0FBQ0ksSUFBSSxLQUFLO1FBQzdCRSxNQUFNO1lBQ0pDLE1BQU1WLDJDQUFNQSxDQUFDRyxJQUFJLENBQUNPLElBQUk7WUFDdEJDLE1BQU1YLDJDQUFNQSxDQUFDRyxJQUFJLENBQUNRLElBQUk7UUFDeEI7SUFDRjtJQUVBLE9BQU9WO0FBQ1Q7QUFTTyxlQUFlVyxVQUFVLEVBQUVDLEVBQUUsRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBb0I7SUFDOUUsTUFBTUMsYUFBYUosTUFBTWIsMkNBQU1BLENBQUNHLElBQUksQ0FBQ2MsVUFBVTtJQUMvQyxNQUFNQyxTQUFTbkIsMEZBQW9CQSxHQUFHbUIsTUFBTSxDQUFDQyxLQUFLLENBQUM7UUFBRUMsV0FBVztJQUFTO0lBRXpFLElBQUksQ0FBQ0gsWUFBWTtRQUNmQyxPQUFPRyxLQUFLLENBQUMsa0ZBQWtGO1lBQUVOO1FBQVE7UUFDekcsT0FBTztZQUFFTyxTQUFTO1lBQWdCRCxPQUFPO1FBQTJCO0lBQ3RFO0lBRUEsSUFBSSxDQUFDckIsMkNBQU1BLENBQUNHLElBQUksQ0FBQ29CLElBQUksRUFBRTtRQUNyQkwsT0FBT0csS0FBSyxDQUFDLG1EQUFtRDtZQUFFTjtZQUFTRTtRQUFXO1FBQ3RGLE9BQU87WUFBRUssU0FBUztZQUFnQkQsT0FBTztRQUE4QjtJQUN6RTtJQUVBLE1BQU1HLGNBQWM7UUFDbEJELE1BQU12QiwyQ0FBTUEsQ0FBQ0csSUFBSSxDQUFDb0IsSUFBSTtRQUN0QlYsSUFBSUk7UUFDSkg7UUFDQUM7UUFDQUM7SUFDRjtJQUdBLElBQUk7UUFDRixNQUFNUyxPQUFPLE1BQU12QixpQkFBaUJ3QixRQUFRLENBQUNGO1FBQzdDTixPQUFPTyxJQUFJLENBQUMsMkJBQTJCO1lBQUVFLFdBQVdGLEtBQUtFLFNBQVM7WUFBRVo7WUFBU0U7UUFBVztRQUN4RixPQUFPO1lBQUVLLFNBQVM7WUFBTUssV0FBV0YsS0FBS0UsU0FBUztRQUFDO0lBQ3BELEVBQUUsT0FBT04sT0FBTztRQUNkLE1BQU1PLFdBQVdQLGlCQUFpQmhCLFFBQVFnQixNQUFNUSxPQUFPLEdBQUdDLE9BQU9UO1FBQ2pFSCxPQUFPRyxLQUFLLENBQUMsdUJBQXVCO1lBQUVBLE9BQU9PO1lBQVViO1lBQVNFO1FBQVc7UUFDM0UsT0FBTztZQUFFSyxTQUFTO1lBQU9ELE9BQU9PO1FBQVM7SUFDM0M7QUFDRiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL2xpYi9tYWlsL21haWxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9kZW1haWxlciBmcm9tICdub2RlbWFpbGVyJztcbmltcG9ydCB7IGdldFNlcnZlckFwcFNlcnZpY2VzIH0gZnJvbSAnQC9saWIvc2VydmljZXMvY3JlYXRlLXNlcnZpY2VzLnNlcnZlcic7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuLi9jb25maWcnO1xuXG5sZXQgdHJhbnNwb3J0ZXJJbnN0YW5jZTogbm9kZW1haWxlci5UcmFuc3BvcnRlciB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRUcmFuc3BvcnRlcigpIHtcbiAgaWYgKHRyYW5zcG9ydGVySW5zdGFuY2UpIHJldHVybiB0cmFuc3BvcnRlckluc3RhbmNlO1xuXG4gIGlmICghY29uZmlnLm1haWwuaG9zdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTUFJTF9IT1NUIGlzIG5vdCBjb25maWd1cmVkLiBQbGVhc2UgY2hlY2sgeW91ciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuJyk7XG4gIH1cblxuICB0cmFuc3BvcnRlckluc3RhbmNlID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoe1xuICAgIGhvc3Q6IGNvbmZpZy5tYWlsLmhvc3QsXG4gICAgcG9ydDogY29uZmlnLm1haWwucG9ydCxcbiAgICBzZWN1cmU6IGNvbmZpZy5tYWlsLnBvcnQgPT09IDQ2NSxcbiAgICBhdXRoOiB7XG4gICAgICB1c2VyOiBjb25maWcubWFpbC51c2VyLFxuICAgICAgcGFzczogY29uZmlnLm1haWwucGFzcyxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gdHJhbnNwb3J0ZXJJbnN0YW5jZTtcbn1cblxuaW50ZXJmYWNlIFNlbmRFbWFpbE9wdGlvbnMge1xuICB0bz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICByZXBseVRvPzogc3RyaW5nO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIGh0bWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRFbWFpbCh7IHRvLCByZXBseVRvLCBzdWJqZWN0LCBodG1sIH06IFNlbmRFbWFpbE9wdGlvbnMpIHtcbiAgY29uc3QgcmVjaXBpZW50cyA9IHRvIHx8IGNvbmZpZy5tYWlsLnJlY2lwaWVudHM7XG4gIGNvbnN0IGxvZ2dlciA9IGdldFNlcnZlckFwcFNlcnZpY2VzKCkubG9nZ2VyLmNoaWxkKHsgY29tcG9uZW50OiAnbWFpbGVyJyB9KTtcblxuICBpZiAoIXJlY2lwaWVudHMpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ05vIGVtYWlsIHJlY2lwaWVudHMgY29uZmlndXJlZCAoTUFJTF9SRUNJUElFTlRTIGlzIGVtcHR5IGFuZCBubyBcInRvXCIgcHJvdmlkZWQpJywgeyBzdWJqZWN0IH0pO1xuICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlIGFzIGNvbnN0LCBlcnJvcjogJ05vIHJlY2lwaWVudHMgY29uZmlndXJlZCcgfTtcbiAgfVxuXG4gIGlmICghY29uZmlnLm1haWwuZnJvbSkge1xuICAgIGxvZ2dlci5lcnJvcignTUFJTF9GUk9NIGlzIG5vdCBjb25maWd1cmVkIOKAlCBjYW5ub3Qgc2VuZCBlbWFpbCcsIHsgc3ViamVjdCwgcmVjaXBpZW50cyB9KTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSBhcyBjb25zdCwgZXJyb3I6ICdNQUlMX0ZST00gaXMgbm90IGNvbmZpZ3VyZWQnIH07XG4gIH1cblxuICBjb25zdCBtYWlsT3B0aW9ucyA9IHtcbiAgICBmcm9tOiBjb25maWcubWFpbC5mcm9tLFxuICAgIHRvOiByZWNpcGllbnRzLFxuICAgIHJlcGx5VG8sXG4gICAgc3ViamVjdCxcbiAgICBodG1sLFxuICB9O1xuXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBpbmZvID0gYXdhaXQgZ2V0VHJhbnNwb3J0ZXIoKS5zZW5kTWFpbChtYWlsT3B0aW9ucyk7XG4gICAgbG9nZ2VyLmluZm8oJ0VtYWlsIHNlbnQgc3VjY2Vzc2Z1bGx5JywgeyBtZXNzYWdlSWQ6IGluZm8ubWVzc2FnZUlkLCBzdWJqZWN0LCByZWNpcGllbnRzIH0pO1xuICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2VJZDogaW5mby5tZXNzYWdlSWQgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIHNlbmRpbmcgZW1haWwnLCB7IGVycm9yOiBlcnJvck1zZywgc3ViamVjdCwgcmVjaXBpZW50cyB9KTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3I6IGVycm9yTXNnIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJub2RlbWFpbGVyIiwiZ2V0U2VydmVyQXBwU2VydmljZXMiLCJjb25maWciLCJ0cmFuc3BvcnRlckluc3RhbmNlIiwiZ2V0VHJhbnNwb3J0ZXIiLCJtYWlsIiwiaG9zdCIsIkVycm9yIiwiY3JlYXRlVHJhbnNwb3J0IiwicG9ydCIsInNlY3VyZSIsImF1dGgiLCJ1c2VyIiwicGFzcyIsInNlbmRFbWFpbCIsInRvIiwicmVwbHlUbyIsInN1YmplY3QiLCJodG1sIiwicmVjaXBpZW50cyIsImxvZ2dlciIsImNoaWxkIiwiY29tcG9uZW50IiwiZXJyb3IiLCJzdWNjZXNzIiwiZnJvbSIsIm1haWxPcHRpb25zIiwiaW5mbyIsInNlbmRNYWlsIiwibWVzc2FnZUlkIiwiZXJyb3JNc2ciLCJtZXNzYWdlIiwiU3RyaW5nIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(action-browser)/./lib/mail/mailer.ts\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |