| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- var express = require('express');
- var createError = require('http-errors')
- var router = express.Router();
- const ejs = require('ejs');
- const utils = require('../../libs/utils');
- const models = require('../../models');
- // 提交email信息
- router.post('/', async (req, res) => {
- try {
- const { email } = req.body;
- // 验证邮箱格式
- const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
- if (!emailRegex.test(email)) {
- return res.status(400).json({ message: 'Invalid email address' });
- }
- // 检查邮箱是否已存在
- const existingSubscriber = await models.Subscribe.findOne({ email });
- if (existingSubscriber) {
- // 发送欢迎邮件
- let html = await renderFile(__dirname + '/subscribe.ejs', {});
- await utils.mail.send({
- to: email,
- subject: 'Welcome to Art Number Coloring!',
- html,
- })
- return res.status(400).json({ message: 'Email already subscribed' });
- }
- // 创建新订阅者
- const subscribe = new models.Subscribe({ email });
- await subscribe.save();
- // 发送欢迎邮件
- let html = await renderFile(__dirname + '/subscribe.ejs', {});
- await utils.mail.send({
- to: email,
- subject: 'Welcome to Art Number Coloring!',
- html,
- })
- res.status(200).json({ message: 'Subscription successful' });
- } catch (error) {
- console.error('Error subscribing:', error);
- res.status(500).json({ message: 'Server error' });
- }
- });
- async function renderFile(filename, data, options) {
- return new Promise((done, reject) => {
- ejs.renderFile(filename, data, options, function (err, str) {
- if (err) reject(err);
- else done(str);
- });
- })
- }
- module.exports = router;
|