Spaces:
Runtime error
Runtime error
File size: 3,164 Bytes
41af422 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import * as fs from 'fs'
import * as path from 'path'
import nodemailer from 'nodemailer'
import type { MailConfig } from '../storage/model'
import { getCacheConfig } from '../storage/config'
export async function sendVerifyMail(toMail: string, verifyUrl: string) {
const config = (await getCacheConfig())
const templatesPath = path.join(__dirname, 'templates')
const mailTemplatePath = path.join(templatesPath, 'mail.template.html')
let mailHtml = fs.readFileSync(mailTemplatePath, 'utf8')
mailHtml = mailHtml.replace(/\${VERIFY_URL}/g, verifyUrl)
mailHtml = mailHtml.replace(/\${SITE_TITLE}/g, config.siteConfig.siteTitle)
sendMail(toMail, `${config.siteConfig.siteTitle} 账号验证`, mailHtml, config.mailConfig)
}
export async function sendVerifyMailAdmin(toMail: string, verifyName: string, verifyUrl: string) {
const config = (await getCacheConfig())
const templatesPath = path.join(__dirname, 'templates')
const mailTemplatePath = path.join(templatesPath, 'mail.admin.template.html')
let mailHtml = fs.readFileSync(mailTemplatePath, 'utf8')
mailHtml = mailHtml.replace(/\${TO_MAIL}/g, verifyName)
mailHtml = mailHtml.replace(/\${VERIFY_URL}/g, verifyUrl)
mailHtml = mailHtml.replace(/\${SITE_TITLE}/g, config.siteConfig.siteTitle)
sendMail(toMail, `${config.siteConfig.siteTitle} 账号申请`, mailHtml, config.mailConfig)
}
export async function sendResetPasswordMail(toMail: string, verifyUrl: string) {
const config = (await getCacheConfig())
const templatesPath = path.join(__dirname, 'templates')
const mailTemplatePath = path.join(templatesPath, 'mail.resetpassword.template.html')
let mailHtml = fs.readFileSync(mailTemplatePath, 'utf8')
mailHtml = mailHtml.replace(/\${VERIFY_URL}/g, verifyUrl)
mailHtml = mailHtml.replace(/\${SITE_TITLE}/g, config.siteConfig.siteTitle)
sendMail(toMail, `${config.siteConfig.siteTitle} 密码重置`, mailHtml, config.mailConfig)
}
export async function sendNoticeMail(toMail: string) {
const config = (await getCacheConfig())
const templatesPath = path.join(__dirname, 'templates')
const mailTemplatePath = path.join(templatesPath, 'mail.notice.template.html')
let mailHtml = fs.readFileSync(mailTemplatePath, 'utf8')
mailHtml = mailHtml.replace(/\${SITE_DOMAIN}/g, config.siteConfig.siteDomain)
mailHtml = mailHtml.replace(/\${SITE_TITLE}/g, config.siteConfig.siteTitle)
sendMail(toMail, `${config.siteConfig.siteTitle} 账号开通`, mailHtml, config.mailConfig)
}
export async function sendTestMail(toMail: string, config: MailConfig) {
return sendMail(toMail, '测试邮件|Test mail', '这是一封测试邮件|This is test mail', config)
}
async function sendMail(toMail: string, subject: string, html: string, config: MailConfig) {
const mailOptions = {
from: config.smtpUserName,
to: toMail,
subject,
html,
}
const transporter = nodemailer.createTransport({
host: config.smtpHost,
port: config.smtpPort,
secure: config.smtpTsl,
auth: {
user: config.smtpUserName,
pass: config.smtpPassword,
},
})
const info = await transporter.sendMail(mailOptions)
return info.messageId
}
|