You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
4.6 KiB
88 lines
4.6 KiB
'use strict'; |
|
const nodemailer = require('nodemailer'); |
|
|
|
let config = { |
|
auth: { |
|
user: process.env.SMTP_USER, |
|
pass: process.env.SMTP_PASS |
|
} |
|
} |
|
|
|
if (process.env.SMTP_SERVICE != null) { |
|
config.service = process.env.SMTP_SERVICE; |
|
} else { |
|
config.host = process.env.SMTP_HOST; |
|
config.port = parseInt(process.env.SMTP_PORT); |
|
config.secure = process.env.SMTP_SECURE === "false" ? false : true; |
|
} |
|
|
|
const transporter = nodemailer.createTransport(config); |
|
|
|
transporter.verify(function(error, success) { |
|
if (error) { |
|
console.log('SMTP邮箱配置异常:', error); |
|
} |
|
if (success) { |
|
console.log("SMTP邮箱配置正常!"); |
|
} |
|
}); |
|
|
|
exports.notice = (comment) => { |
|
let SITE_NAME = process.env.SITE_NAME; |
|
let NICK = comment.get('nick'); |
|
let COMMENT = comment.get('comment'); |
|
let POST_URL = process.env.SITE_URL + comment.get('url') + '#' + comment.get('objectId'); |
|
let SITE_URL = process.env.SITE_URL; |
|
|
|
let _template = process.env.MAIL_TEMPLATE_ADMIN || '<div style="border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;"><h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"> 您在<a style="text-decoration:none;color: #12ADDB;" href="${SITE_URL}" target="_blank">${SITE_NAME}</a>上的文章有了新的评论</h2><p><strong>${NICK}</strong>回复说:</p><div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;"> ${COMMENT}</div><p>您可以点击<a style="text-decoration:none; color:#12addb" href="${POST_URL}" target="_blank">查看回复的完整內容</a><br></p></div></div>'; |
|
let _subject = process.env.MAIL_SUBJECT_ADMIN || '${SITE_NAME}上有新评论了'; |
|
let emailSubject = eval('`' + _subject + '`'); |
|
let emailContent = eval('`' + _template + '`'); |
|
|
|
let mailOptions = { |
|
from: '"' + process.env.SENDER_NAME + '" <' + process.env.SENDER_EMAIL + '>', |
|
to: process.env.BLOGGER_EMAIL || process.env.SENDER_EMAIL, |
|
subject: emailSubject, |
|
html: emailContent |
|
}; |
|
|
|
transporter.sendMail(mailOptions, (error, info) => { |
|
if (error) { |
|
return console.log(error); |
|
} |
|
console.log('博主通知邮件成功发送: %s', info.response); |
|
comment.set('isNotified', true); |
|
comment.save(); |
|
}); |
|
} |
|
|
|
exports.send = (currentComment, parentComment)=> { |
|
let PARENT_NICK = parentComment.get('nick'); |
|
let SITE_NAME = process.env.SITE_NAME; |
|
let NICK = currentComment.get('nick'); |
|
let COMMENT = currentComment.get('comment'); |
|
let PARENT_COMMENT = parentComment.get('comment'); |
|
let POST_URL = process.env.SITE_URL + currentComment.get('url') + '#' + currentComment.get('objectId'); |
|
let SITE_URL = process.env.SITE_URL; |
|
|
|
let _subject = process.env.MAIL_SUBJECT || '${PARENT_NICK},您在『${SITE_NAME}』上的评论收到了回复'; |
|
let _template = process.env.MAIL_TEMPLATE || '<div style="border-top:2px solid #12ADDB;box-shadow:0 1px 3px #AAAAAA;line-height:180%;padding:0 15px 12px;margin:50px auto;font-size:12px;"><h2 style="border-bottom:1px solid #DDD;font-size:14px;font-weight:normal;padding:13px 0 10px 8px;"> 您在<a style="text-decoration:none;color: #12ADDB;" href="${SITE_URL}" target="_blank"> ${SITE_NAME}</a>上的评论有了新的回复</h2> ${PARENT_NICK} 同学,您曾发表评论:<div style="padding:0 12px 0 12px;margin-top:18px"><div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;"> ${PARENT_COMMENT}</div><p><strong>${NICK}</strong>回复说:</p><div style="background-color: #f5f5f5;padding: 10px 15px;margin:18px 0;word-wrap:break-word;"> ${COMMENT}</div><p>您可以点击<a style="text-decoration:none; color:#12addb" href="${POST_URL}" target="_blank">查看回复的完整內容</a>,欢迎再次光临<a style="text-decoration:none; color:#12addb" href="${SITE_URL}" target="_blank">${SITE_NAME}</a>。<br></p></div></div>'; |
|
let emailSubject = eval('`' + _subject + '`'); |
|
let emailContent = eval('`' + _template + '`'); |
|
|
|
let mailOptions = { |
|
from: '"' + process.env.SENDER_NAME + '" <' + process.env.SENDER_EMAIL + '>', // sender address |
|
to: parentComment.get('mail'), |
|
subject: emailSubject, |
|
html: emailContent |
|
}; |
|
|
|
transporter.sendMail(mailOptions, (error, info) => { |
|
if (error) { |
|
return console.log(error); |
|
} |
|
console.log('AT通知邮件成功发送: %s', info.response); |
|
currentComment.set('isNotified', true); |
|
currentComment.save(); |
|
}); |
|
};
|
|
|