diff --git a/src/mailer.js b/src/mailer.js index d004c913c..5f8cd6f22 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -75,8 +75,8 @@ async function sendMail(mailOptions) { }); const [error] = await safe(transport.sendMail(mailOptions)); - if (error) debug(`Error sending Email "${mailOptions.subject}" to ${mailOptions.to}: ${error.message}`); - else debug(`Email "${mailOptions.subject}" sent to ${mailOptions.to}`); + if (error) throw new BoxError(BoxError.EXTERNAL_ERROR, `Error sending Email "${mailOptions.subject}" to ${mailOptions.to}: ${error.message}`); + debug(`Email "${mailOptions.subject}" sent to ${mailOptions.to}`); } function render(templateFile, params, translationAssets) { diff --git a/src/notifications.js b/src/notifications.js index e5de71d13..2340255a4 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -47,6 +47,7 @@ const assert = require('assert'), debug = require('debug')('box:notifications'), eventlog = require('./eventlog.js'), mailer = require('./mailer.js'), + safe = require('safetydance'), users = require('./users.js'); const NOTIFICATION_FIELDS = [ 'id', 'eventId', 'type', 'title', 'message', 'creationTime', 'acknowledged', 'context' ]; @@ -167,7 +168,7 @@ async function oomEvent(eventId, containerId, app, addonName, event) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_APP_OOM)) { - await mailer.oomEvent(admin.email, containerId, app, addonName, event); + await safe(mailer.oomEvent(admin.email, containerId, app, addonName, event), { debug }); } } } @@ -179,7 +180,7 @@ async function appUp(eventId, app) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_APP_UP)) { - await mailer.appUp(admin.email, app); + await safe(mailer.appUp(admin.email, app), { debug }); } } } @@ -191,7 +192,7 @@ async function appDown(eventId, app) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_APP_DOWN)) { - await mailer.appDown(admin.email, app); + await safe(mailer.appDown(admin.email, app), { debug }); } } } @@ -242,7 +243,7 @@ async function boxUpdateError(eventId, errorMessage) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_CLOUDRON_UPDATE_FAILED)) { - await mailer.boxUpdateError(admin.email, errorMessage); + await safe(mailer.boxUpdateError(admin.email, errorMessage), { debug }); } } } @@ -257,7 +258,7 @@ async function certificateRenewalError(eventId, fqdn, errorMessage) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_CERTIFICATE_RENEWAL_FAILED)) { - await mailer.certificateRenewalError(admin.email, fqdn, errorMessage); + await safe(mailer.certificateRenewalError(admin.email, fqdn, errorMessage), { debug }); } } } @@ -273,7 +274,7 @@ async function backupFailed(eventId, taskId, errorMessage) { const superadmins = await users.getSuperadmins(); for (const superadmin of superadmins) { if (superadmin.notificationConfig.includes(exports.TYPE_BACKUP_FAILED)) { - await mailer.backupFailed(superadmin.email, errorMessage, `https://${dashboardFqdn}/logs.html?taskId=${taskId}`); + await safe(mailer.backupFailed(superadmin.email, errorMessage, `https://${dashboardFqdn}/logs.html?taskId=${taskId}`), { debug }); } } } @@ -282,7 +283,7 @@ async function rebootRequired() { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_REBOOT)) { - await mailer.rebootRequired(admin.email); + await safe(mailer.rebootRequired(admin.email), { debug }); } } } @@ -293,7 +294,7 @@ async function lowDiskSpace(message) { const admins = await users.getAdmins(); for (const admin of admins) { if (admin.notificationConfig.includes(exports.TYPE_DISK_SPACE)) { - await mailer.lowDiskSpace(admin.email, message); + await safe(mailer.lowDiskSpace(admin.email, message), { debug }); } } } diff --git a/src/users.js b/src/users.js index 4a2ed177a..fb3c45b2d 100644 --- a/src/users.js +++ b/src/users.js @@ -807,7 +807,7 @@ async function notifyLoginLocation(user, ip, userAgent, auditSource) { await update(user, { loginLocations }, auditSource); - await mailer.sendNewLoginLocation(user, newLoginLocation); + await safe(mailer.sendNewLoginLocation(user, newLoginLocation), { debug }); } async function setPassword(user, newPassword, auditSource) {