feat(tickets): write mail ticket info db

This commit is contained in:
OldHawk
2018-04-02 19:11:44 +08:00
parent 2b7ebad528
commit b750899ea4
5 changed files with 63 additions and 11 deletions

View File

@@ -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'
}
}
},

View File

@@ -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

View File

@@ -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);
}
});
}
});
});
}

View File

@@ -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,

View File

@@ -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,