diff --git a/src/js/client.js b/src/js/client.js index 8fb9cb667..d63ef52d8 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -2717,6 +2717,38 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; + Client.prototype.listMailQueue = function (search, page, perPage, callback) { + var config = { + params: { + search: search, + page: page, + per_page: perPage + } + }; + + get('/api/v1/mailserver/tempfail_queue', config, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + callback(null, data.usage); + }); + }; + + Client.prototype.delMailQueueItem = function (file, callback) { + del('/api/v1/mailserver/tempfail_queue/' + file, {}, config, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + callback(null, data.usage); + }); + }; + + Client.prototype.resendMailQueueItem = function (file, callback) { + post('/api/v1/mailserver/tempfail_queue/' + file + '/resend', {}, config, function (error, data, status) { + if (error) return callback(error); + if (status !== 201) return callback(new ClientError(status, data)); + callback(null, data.usage); + }); + }; + Client.prototype.getMailConfigForDomain = function (domain, callback) { get('/api/v1/mail/' + domain, null, function (error, data, status) { if (error) return callback(error); diff --git a/src/js/index.js b/src/js/index.js index 6825f7fd7..c9c45276b 100644 --- a/src/js/index.js +++ b/src/js/index.js @@ -83,6 +83,9 @@ app.config(['$routeProvider', function ($routeProvider) { }).when('/emails-eventlog', { controller: 'EmailsEventlogController', templateUrl: 'views/emails-eventlog.html?<%= revision %>' + }).when('/emails-queue', { + controller: 'EmailsQueueController', + templateUrl: 'views/emails-queue.html?<%= revision %>' }).when('/email/:domain/:view?', { controller: 'EmailController', templateUrl: 'views/email.html?<%= revision %>' diff --git a/src/views/emails-eventlog.html b/src/views/emails-eventlog.html index 752848d63..af3f777d8 100644 --- a/src/views/emails-eventlog.html +++ b/src/views/emails-eventlog.html @@ -8,6 +8,7 @@ {{ 'emails.eventlog.title' | tr }} {{ 'main.action.logs' | tr }} + {{ 'emails.action.queue' | tr }} diff --git a/src/views/emails-queue.html b/src/views/emails-queue.html new file mode 100644 index 000000000..b5156906f --- /dev/null +++ b/src/views/emails-queue.html @@ -0,0 +1,98 @@ +
| + | {{ 'emails.eventlog.time' | tr }} | +{{ 'emails.eventlog.mailFrom' | tr }} | +{{ 'emails.eventlog.rcptTo' | tr }} | +{{ 'emails.eventlog.details' | tr }} | +|
|---|---|---|---|---|---|
|
+ + + {{ 'emails.eventlog.empty' | tr }} + + + |
+ |||||
| + + + + + + + + + + | +{{ eventlog.ts | prettyDate }} | +{{ (eventlog.mailFrom | prettyEmailAddresses) || '-' }} | +{{ (eventlog.rcptTo | prettyEmailAddresses) || eventlog.mailbox || '-' }} | ++ {{ 'emails.eventlog.type.bounceInfo' | tr }}. {{ eventlog.message || eventlog.reason }} + {{ 'emails.eventlog.type.deferredInfo' | tr: { delay:eventlog.delay } }}. {{ eventlog.message || eventlog.reason }} + + {{ 'emails.eventlog.type.inboundInfo' | tr }} + {{ 'emails.eventlog.type.outboundInfo' | tr }} + + {{ 'emails.eventlog.type.receivedInfo' | tr }} + {{ 'emails.eventlog.type.deliveredInfo' | tr }} + {{ 'emails.eventlog.type.deniedInfo' | tr }}. {{ eventlog.message || eventlog.reason }} + {{ 'emails.eventlog.type.spamFilterTrainedInfo' | tr }} + + {{ 'emails.eventlog.type.overQuotaInfo' | tr: { mailbox: eventlog.mailbox, quotaPercent: eventlog.quotaPercent } }} + {{ 'emails.eventlog.type.underQuotaInfo' | tr: { mailbox: eventlog.mailbox, quotaPercent: -eventlog.quotaPercent } }} + + | +|
+ {{ item | json }}
+ |
+ |||||