🎉 able to send email message now

This commit is contained in:
Song
2021-01-31 15:30:22 +08:00
parent a046b0aea9
commit 63e8bd8744
10 changed files with 125 additions and 11 deletions
+51
View File
@@ -0,0 +1,51 @@
const nodemailer = require('nodemailer');
const { tokenStore } = require('./token');
const config = require('../config');
const { md2html } = require('./utils');
async function pushEmailMessage(userPrefix, message) {
let user = tokenStore.get(userPrefix);
if (!user) {
return {
success: false,
message: `不存在的前缀:${userPrefix},请注意大小写`,
};
}
let transporter = nodemailer.createTransport({
host: user.smtpServer,
secure: true,
auth: {
user: user.smtpUser,
pass: user.smtpPass,
},
});
let targetEmail = user.email;
if (message.email) {
targetEmail = message.email;
}
try {
await transporter.sendMail({
from: `"消息推送服务" <${user.smtpUser}>`,
to: targetEmail,
subject: message.description,
text: message.content,
html: md2html(message.content),
});
return {
success: true,
message: 'ok',
};
} catch (e) {
console.error(e);
return {
success: false,
message: e.message,
};
}
}
module.exports = {
pushEmailMessage,
};
+7 -2
View File
@@ -1,8 +1,13 @@
const { pushWeChatMessage } = require('./wechat');
const { pushEmailMessage } = require('./email');
const Message = require('../models/message').Message;
async function processMessage(userPrefix, message) {
if (message.content) {
if (message.email) {
// If message has the attribute "email", override its type.
message.type = '1';
}
if (message.content && message.type === '0') {
message = await Message.create(message);
}
let result = {
@@ -14,7 +19,7 @@ async function processMessage(userPrefix, message) {
result = await pushWeChatMessage(userPrefix, message);
break;
case '1': // Email message
// TODO: Email message
result = await pushEmailMessage(userPrefix, message);
break;
case '2': // HTTP GET request
// TODO: HTTP GET request
+4
View File
@@ -13,6 +13,10 @@ async function initializeTokenStore() {
wechatOpenId: user.wechatOpenId,
wechatVerifyToken: user.wechatVerifyToken,
token: '',
email: user.email,
smtpServer: user.smtpServer,
smtpUser: user.smtpUser,
smtpPass: user.smtpPass,
});
}
});
+10
View File
@@ -0,0 +1,10 @@
const lexer = require('marked').lexer;
const parser = require('marked').parser;
function md2html(markdown) {
return parser(lexer(markdown));
}
module.exports = {
md2html,
};