diff --git a/config/env/development.js b/config/env/development.js index 0b4a64e9..df558e3d 100644 --- a/config/env/development.js +++ b/config/env/development.js @@ -57,13 +57,13 @@ module.exports = { sandbox: true }, mailer: { - from: process.env.MAILER_FROM || 'admin@mean.im', + from: process.env.MAILER_FROM || 'service.mine.pt@gmail.com', options: { - service: process.env.MAILER_SERVICE_PROVIDER || 'service name like as: Gmail', + service: process.env.MAILER_SERVICE_PROVIDER || 'Gmail', imap: process.env.MAILER_IMAP || 'imap.gmail.com', auth: { - user: process.env.MAILER_EMAIL_ID || 'example@gmail.com', - pass: process.env.MAILER_PASSWORD || 'mail password' + user: process.env.MAILER_EMAIL_ID || 'service.mine.pt@gmail.com', + pass: process.env.MAILER_PASSWORD || 'minept740729' } } }, diff --git a/config/env/torrents.js b/config/env/torrents.js index 41a6c219..27116fbb 100644 --- a/config/env/torrents.js +++ b/config/env/torrents.js @@ -25,7 +25,7 @@ module.exports = { app: { name: 'MEAN.im', domain: 'http://localhost:3000', - mailTicketService: false, + mailTicketService: true, showDemoWarningPopup: true, cronTimeZone: 'Asia/Shanghai', showDebugLog: false diff --git a/config/lib/cron-job.js b/config/lib/cron-job.js index fd998b94..be49d31f 100644 --- a/config/lib/cron-job.js +++ b/config/lib/cron-job.js @@ -284,10 +284,57 @@ function listenServiceEmail() { simpleParser(client.createMessageStream(message.UID), function (err, mail_object) { client.addFlags(message.UID, ['\\Seen'], function (err, flags) { console.log(chalk.blue('Check-out ' + (isNew ? 'new' : 'unseen') + ' email from ' + config.mailer.options.auth.user)); - console.log('From: ', mail_object.from.text); - console.log('Subject: ', mail_object.subject); - // console.log('Text body:', mail_object.text); - console.log('Add flag: ', flags); + // console.log(mail_object); + + // write unseen/new message into mail-tickets db table + if (mail_object.references) { //reply message + MailTicket.findOne({ + messageId: mail_object.references[0] + }, function (err, m) { + if (!err && m) { + var subTicket = new MailTicket(); + subTicket.messageId = mail_object.messageId; + subTicket.from = mail_object.from.text; + subTicket.to = config.mailer.options.auth.user; + subTicket.title = mail_object.subject; + subTicket.content = mail_object.text; + + m._replies.push(subTicket); + m.save(function (err) { + if (err) { + mtDebug.debugError('write reply mail ticket info db failed!'); + } else { + console.log('From: ', mail_object.from.text); + console.log('MessageId: ', mail_object.messageId); + console.log('References: ', mail_object.references ? mail_object.references[0] : 'origin'); + console.log('Subject: ', mail_object.subject); + // console.log('Text body:', mail_object.text); + // console.log('Add flag: ', flags); + } + }); + } + }); + } else { //new message + var newTicket = new MailTicket(); + newTicket.messageId = mail_object.messageId; + newTicket.from = mail_object.from.text; + newTicket.to = config.mailer.options.auth.user; + newTicket.title = mail_object.subject; + newTicket.content = mail_object.text; + + newTicket.save(function (err) { + if (err) { + mtDebug.debugError('write new mail ticket info db failed!'); + } else { + console.log('From: ', mail_object.from.text); + console.log('MessageId: ', mail_object.messageId); + console.log('References: ', mail_object.references ? mail_object.references[0] : 'origin'); + console.log('Subject: ', mail_object.subject); + // console.log('Text body:', mail_object.text); + // console.log('Add flag: ', flags); + } + }); + } }); }); } diff --git a/modules/tickets/server/models/mail-ticket.server.model.js b/modules/tickets/server/models/mail-ticket.server.model.js index f7304880..5d25b6c8 100644 --- a/modules/tickets/server/models/mail-ticket.server.model.js +++ b/modules/tickets/server/models/mail-ticket.server.model.js @@ -10,6 +10,11 @@ var mongoose = require('mongoose'), * Ticket Schema */ var MailTicketSchema = new Schema({ + messageId: { + type: String, + default: '', + trim: true + }, from: { type: String, default: '', @@ -43,7 +48,7 @@ var MailTicketSchema = new Schema({ status: { type: Number, - default: 0 //0 new, 1 handling, 2 solved + default: 0 //0 open(waiting handling), 1 wait(waiting reply), 2 solved }, createdAt: { type: Date, diff --git a/modules/tickets/server/models/message-ticket.server.model.js b/modules/tickets/server/models/message-ticket.server.model.js index fc5bc2c2..7e4f08ee 100644 --- a/modules/tickets/server/models/message-ticket.server.model.js +++ b/modules/tickets/server/models/message-ticket.server.model.js @@ -41,7 +41,7 @@ var MessageTicketSchema = new Schema({ status: { type: Number, - default: 0 //0 new, 1 handling, 2 solved + default: 0 //0 open(waiting handling), 1 wait(waiting reply), 2 solved }, createdAt: { type: Date,