Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | 16x 16x 16x 16x 16x 16x 16x 16x 16x 16x | import Debug from 'debug' import nodemailer from 'nodemailer' import swig from 'swig' import ses from 'nodemailer-ses-transport' const debug = Debug('crowi:lib:mailer') export default crowi => { 'use strict' var config = crowi.getConfig() var mailConfig: any = {} var mailer: any = {} var MAIL_TEMPLATE_DIR = crowi.mailDir function createSMTPClient(option?) { var client debug('createSMTPClient option', option) if (!option) { option = { host: config.crowi['mail:smtpHost'], port: config.crowi['mail:smtpPort'], } if (config.crowi['mail:smtpUser'] && config.crowi['mail:smtpPassword']) { option.auth = { user: config.crowi['mail:smtpUser'], pass: config.crowi['mail:smtpPassword'], } } if (option.port === 465) { option.secure = true } } option.tls = { rejectUnauthorized: false } client = nodemailer.createTransport(option) debug('mailer set up for SMTP', client) return client } function createSESClient(option?) { var client if (!option) { option = { accessKeyId: config.crowi['aws:accessKeyId'], secretAccessKey: config.crowi['aws:secretAccessKey'], } } client = nodemailer.createTransport(ses(option)) debug('mailer set up for SES', client) return client } function initialize() { Eif (!config.crowi['mail:from']) { mailer = undefined return } if (config.crowi['mail:smtpHost'] && config.crowi['mail:smtpPort']) { // SMTP 設定がある場合はそれを優先 mailer = createSMTPClient() } else if (config.crowi['aws:accessKeyId'] && config.crowi['aws:secretAccessKey']) { // AWS 設定がある場合はSESを設定 mailer = createSESClient() } else { mailer = undefined } mailConfig.from = config.crowi['mail:from'] mailConfig.subject = config.crowi['app:title'] + 'からのメール' debug('mailer initialized') } function setupMailConfig(overrideConfig) { var c = overrideConfig var mc: any = {} mc = mailConfig mc.to = c.to mc.from = c.from || mailConfig.from mc.text = c.text mc.subject = c.subject || mailConfig.subject return mc } function send(config, callback) { if (mailer) { var templateVars = config.vars || {} return swig.renderFile(MAIL_TEMPLATE_DIR + config.template, templateVars, function(err, output) { if (err) { throw err } config.text = output return mailer.sendMail(setupMailConfig(config), callback) }) } else { debug('Mailer is not completed to set up. Please set up SMTP or AWS setting.') return callback(new Error('Mailer is not completed to set up. Please set up SMTP or AWS setting.'), null) } } initialize() return { createSMTPClient: createSMTPClient, createSESClient: createSESClient, mailer: mailer, send: send, } } |