diff --git a/src/built_in/glues/daruk_nodemailer.ts b/src/built_in/glues/daruk_nodemailer.ts index 0c2a8c4..4fcd494 100644 --- a/src/built_in/glues/daruk_nodemailer.ts +++ b/src/built_in/glues/daruk_nodemailer.ts @@ -7,6 +7,8 @@ import { Daruk } from '../../typings/daruk'; import { createTransport } from 'nodemailer'; export default function(app: Daruk.DarukCore) { + // 如果用户没有添加邮件配置 + if (!app.options.nodemailer) return null; const mail = createTransport(app.options.nodemailer); mail.verify(function handleMailVerificationResult(err: any, success: any) { if (err) { diff --git a/src/built_in/glues/daruk_shutdown_notify.ts b/src/built_in/glues/daruk_shutdown_notify.ts index 9a11f36..85b8977 100644 --- a/src/built_in/glues/daruk_shutdown_notify.ts +++ b/src/built_in/glues/daruk_shutdown_notify.ts @@ -7,24 +7,28 @@ import os = require('os'); import { Daruk } from '../../typings/daruk'; import { parallelWithNoBreak } from '../../utils'; +const noop = () => {}; + export default function(app: Daruk.DarukCore) { - let alertAccounts = app.options.alertAccounts; - assert( - alertAccounts && alertAccounts.length > 0, - 'daruk.options.alertAccounts with email address required' - ); - return () => { + // 如果没有配置邮箱服务 + if (!app.options.nodemailer) return noop; + return function shutDownNotify() { + let alertAccounts = app.options.alertAccounts; + assert( + alertAccounts && alertAccounts.length > 0, + 'daruk.options.alertAccounts with email address required' + ); app.exitHook.addHook(function handleShutdownNotify(err: Error, cb: Function) { // 为了避免频繁的邮件通知,只有报错重启时,才做通知 if (!err) return cb(); - shutDownNotify(err, app).then(() => { + doNotify(err, app).then(() => { cb(); }); }); }; } -function shutDownNotify(err: Error, app: Daruk.DarukCore) { +function doNotify(err: Error, app: Daruk.DarukCore) { const tos = app.options.alertAccounts; const reason = (err && (err.stack || err.message)) || 'no error message'; return new Promise((resolve) => { @@ -34,7 +38,7 @@ function shutDownNotify(err: Error, app: Daruk.DarukCore) { app.name } server is shutdown in ${os.hostname()} at ${new Date().toLocaleString()} - ${reason}`; - const { daruk_nodemailer, daruk_sina_watch } = app.glue; + const { daruk_nodemailer } = app.glue; const mailOptions = daruk_nodemailer.options; const from = `${mailOptions.auth.user}@${mailOptions.domain}`; diff --git a/src/core/daruk_default_options.ts b/src/core/daruk_default_options.ts index 6342860..3197fb5 100644 --- a/src/core/daruk_default_options.ts +++ b/src/core/daruk_default_options.ts @@ -60,16 +60,6 @@ export default function getDefaultOptions(rootPath: string, name: string, debug: loggerMiddleware: {}, requestId: { inject: true - }, - nodemailer: { - debug, - host: 'smtp.sina.com', - secureConnection: true, - auth: { - user: 'fedvip', - pass: '1234qwerasdfzxcv' - }, - domain: 'sina.com' } }; } diff --git a/types/daruk_options.d.ts b/types/daruk_options.d.ts index 6f04821..118be05 100644 --- a/types/daruk_options.d.ts +++ b/types/daruk_options.d.ts @@ -39,7 +39,7 @@ export interface Options { timeout: number; }; requestId: any; - nodemailer: any; + nodemailer?: any; [key: string]: any; }