| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- const nodemailer = require('nodemailer')
 
- const _ = require('lodash')
 
- const fs = require('fs-extra')
 
- const path = require('path')
 
- /* global WIKI */
 
- module.exports = {
 
-   transport: null,
 
-   templates: {},
 
-   init() {
 
-     if (_.get(WIKI.config, 'mail.host', '').length > 2) {
 
-       let conf = {
 
-         host: WIKI.config.mail.host,
 
-         port: WIKI.config.mail.port,
 
-         secure: WIKI.config.mail.secure,
 
-         tls: {
 
-           rejectUnauthorized: !(WIKI.config.mail.verifySSL === false)
 
-         }
 
-       }
 
-       if (_.get(WIKI.config, 'mail.user', '').length > 1) {
 
-         conf = {
 
-           ...conf,
 
-           auth: {
 
-             user: WIKI.config.mail.user,
 
-             pass: WIKI.config.mail.pass
 
-           }
 
-         }
 
-       }
 
-       if (_.get(WIKI.config, 'mail.useDKIM', false)) {
 
-         conf = {
 
-           ...conf,
 
-           dkim: {
 
-             domainName: WIKI.config.mail.dkimDomainName,
 
-             keySelector: WIKI.config.mail.dkimKeySelector,
 
-             privateKey: WIKI.config.mail.dkimPrivateKey
 
-           }
 
-         }
 
-       }
 
-       this.transport = nodemailer.createTransport(conf)
 
-     } else {
 
-       WIKI.logger.warn('Mail is not setup! Please set the configuration in the administration area!')
 
-       this.transport = null
 
-     }
 
-     return this
 
-   },
 
-   async send(opts) {
 
-     if (!this.transport) {
 
-       WIKI.logger.warn('Cannot send email because mail is not setup in the administration area!')
 
-       throw new WIKI.Error.MailNotConfigured()
 
-     }
 
-     await this.loadTemplate(opts.template)
 
-     return this.transport.sendMail({
 
-       from: `"${WIKI.config.mail.senderName}" <${WIKI.config.mail.senderEmail}>`,
 
-       to: opts.to,
 
-       subject: `${opts.subject} - ${WIKI.config.title}`,
 
-       text: opts.text,
 
-       html: _.get(this.templates, opts.template)({
 
-         logo: (WIKI.config.logoUrl.startsWith('http') ? '' : WIKI.config.host) + WIKI.config.logoUrl,
 
-         siteTitle: WIKI.config.title,
 
-         copyright: WIKI.config.company.length > 0 ? WIKI.config.company : 'Powered by Wiki.js',
 
-         ...opts.data
 
-       })
 
-     })
 
-   },
 
-   async loadTemplate(key) {
 
-     if (_.has(this.templates, key)) { return }
 
-     const keyKebab = _.kebabCase(key)
 
-     try {
 
-       const rawTmpl = await fs.readFile(path.join(WIKI.SERVERPATH, `templates/${keyKebab}.html`), 'utf8')
 
-       _.set(this.templates, key, _.template(rawTmpl))
 
-     } catch (err) {
 
-       WIKI.logger.warn(err)
 
-       throw new WIKI.Error.MailTemplateFailed()
 
-     }
 
-   }
 
- }
 
 
  |