global.nv_mail = (to, subject, html) => {
return new Promise((resolve,reject)=>{
var sitename = get_option('nv_site_name','nvPress');
subject = `[${sitename}] ${subject}`;
var nv_smtp_url = get_option('nv_smtp_url');
var nv_smtp_port = get_option('nv_smtp_port');
var nv_smtp_login_name = get_option('nv_smtp_login_name');
var nv_smtp_login_password = get_option('nv_smtp_login_password');
if (!nv_smtp_url || !nv_smtp_port || !nv_smtp_login_name || !nv_smtp_login_password ) {
console.log(`发送给“${to}”的《${subject}》失败:邮件配置不正确`);
reject( new NV_Error("邮件配置不正确") )
return;
}
var nodemailer = require('nodemailer');
var transport = nodemailer.createTransport({
host: nv_smtp_url,
port: nv_smtp_port,
auth: {
user: nv_smtp_login_name,
pass: nv_smtp_login_password
}
});
var message = {
from: `(${sitename})<${nv_smtp_login_name}>`,
to, subject, html
};
transport.sendMail(message, function(err, info) {
if (err) {
reject( new NV_Error(JSON.stringify(err)) )
} else {
resolve( info )
}
});
});
}
var createMailTemplate = (title,to,html)=>{
var sitename = get_option('nv_site_name','nvPress');
var homr_url = get_option('nv_home_url','');
return `<style type="text/css">
.nv-mail-wrapper {
background: #fff;
padding: 20px;
}
.nv-mail-main {
max-width: 768px;
margin: auto;
}
.nv-mail-head {
border-bottom: 1px solid #E5E9F2;
font-size: 24px;
padding: 15px 0;
color: #324057;
}
.nv-mail-content {
font-size: 16px;
padding: 15px 0;
color: #475669;
}
.nv-mail-footer {
margin: 0 -20px -20px -20px;
padding: 20px;
background: #F9FAFC;
text-align: center;
font-size: 12px;
color: #99A9BF;
}
a {
color: inherit;
text-decoration: none;
}
.username {
font-weight: bold;
color: #324057;
}
.regards {
text-align: right;
}
.blue {
color: #007dff;
}
.quote {
display: block;
padding: 1px 20px;
background: rgba(0,125,255,.1);
border-radius: 4px;
border-left: 4px solid #007dff;
}
</style><div class="nv-mail-wrapper">
<div class="nv-mail-main">
<div class="nv-mail-head">${title}</div>
<div class="nv-mail-content">
<p><span class="username">${to}</span> :</p>
${html}
<p class="regards">此致<br><a ${homr_url ? `href=${homr_url} target="_blank"` : ''} class="blue">${sitename}</a>管理团队</p>
</div>
</div>
<div class="nv-mail-footer">${sitename} · nvPress</div>
</div>`;
}
global.send_mail_to_user = (user,title,paragraphs) => {
return new Promise((resolve,reject)=>{
if (!user || !title || !paragraphs) {
reject( new NV_Error('参数错误') )
return;
}
if (!user.email) {
reject( new NV_Error('用户没有设置邮箱') );
return;
}
var p_tags = "";
(paragraphs || []).forEach(p=>{
p_tags += `<p>${p}</p>`;
})
var message = createMailTemplate(title,user.name,p_tags).replace(/\t\t+/g,'').replace(/\n/g,'');
resolve( nv_mail(user.email, `${title}`, message) )
})
}
global.send_mail_to_admin = (title,paragraphs) => {
return new Promise((resolve,reject)=>{
if (!title || !paragraphs) {
reject( new NV_Error('参数错误') )
return;
}
var admin_email = get_option('nv_admin_email');
if ( !admin_email ) {
reject( new NV_Error('网站没有设置管理员邮箱') );
return;
}
var p_tags = "";
(paragraphs || []).forEach(p=>{
p_tags += `<p>${p}</p>`;
})
var message = createMailTemplate(title,'管理员',p_tags);
resolve( nv_mail(admin_email, `${title}`, message) )
})
}