inint
This commit is contained in:
51
module/server/mail.js
Normal file
51
module/server/mail.js
Normal file
@@ -0,0 +1,51 @@
|
||||
import nodemailer from 'nodemailer'
|
||||
import config from './config/index.js'
|
||||
import * as log4js from './log4js.js'
|
||||
|
||||
const transporter = nodemailer.createTransport({
|
||||
host: config.mail.host,
|
||||
port: config.mail.port,
|
||||
secure: config.mail.secure,
|
||||
auth: {
|
||||
user: config.mail.from,
|
||||
pass: config.mail.password,
|
||||
},
|
||||
})
|
||||
|
||||
/**
|
||||
* 发送验证码邮件
|
||||
* @param {string} to 收件人邮箱
|
||||
* @param {string} account 游戏账号
|
||||
* @param {string} code 验证码
|
||||
* @param {number} type 1=注册 2=找回密码
|
||||
*/
|
||||
export async function sendCodeMail(to, account, code, type) {
|
||||
const typeNames = { 1: '注册', 2: '找回密码' }
|
||||
const typeName = typeNames[type] || '验证'
|
||||
const subject = `【${config.game.name}】${typeName}`
|
||||
const html = `
|
||||
<div style="background:#000;padding:50px;min-height:300px;">
|
||||
<div style="background:rgba(0,0,0,.7);border-radius:6px;color:#fff;padding:25px;max-width:450px;">
|
||||
<h3>${subject}</h3>
|
||||
<p>您的${config.account.name}${config.account.nameSuffix}:<strong>${account}</strong></p>
|
||||
<p>您的验证码:<span style="font-weight:700;font-size:18px;text-decoration:underline;color:#f5bd10;">${code}</span></p>
|
||||
<p style="color:#aaa;">用于${typeName}验证,5分钟内有效。</p>
|
||||
<hr style="border-color:#333;"/>
|
||||
<p style="font-size:12px;color:#666;">${config.game.name} · ${config.game.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
`
|
||||
try {
|
||||
await transporter.sendMail({
|
||||
from: `"${config.game.name}" <${config.mail.from}>`,
|
||||
to,
|
||||
subject,
|
||||
html,
|
||||
})
|
||||
log4js.koa.info(`验证码邮件发送成功 -> ${to}`)
|
||||
return true
|
||||
} catch (err) {
|
||||
log4js.koa.error(`验证码邮件发送失败 -> ${to}`, err.message)
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user