nodemailer实现发送邮件后跳转静态页面

发布时间 2023-10-08 11:11:48作者: lxpeak

写了一个静态展示页面,并通过node.js中的nodemailer实现发送邮件服务,发送结束后跳转到其他静态页面。

点击查看代码
const express = require('express');
const nodemailer = require('nodemailer');

const app = express();
// 解析 url-encoded格式的表单数据
app.use(express.urlencoded({ extended: false }));
// 解析json格式的表单数据
app.use(express.json());
// 设置静态资源访问目录
app.use(express.static('./'))

const port = 30000;

//测试用,正式上线注释掉这个
const email_host = 'smtp.163.com';
const email_from = "xxx@163.com";
const email_from_psw = "XXXXXX";
const email_to = "xxx@163.com";


// 配置 nodemailer transporter
let transporter = nodemailer.createTransport({
    host: email_host,
    secure: true,
    auth: {
        user: email_from,
        pass: email_from_psw
    }
});

var path = require('path');

// 发送电子邮件的终点
app.post('/send-email', (req, res) => {
    var username = req.body.username
    var tel = req.body.tel
    var email = req.body.email
    var language = req.body.language

    const mailOptions = {
        from: email_from,
        to: email_to,
        // 邮件标题
        subject: req.body.subject,
        //邮件内容,以html的形式输入,在邮件中会自动解析显示
        html: `
            <p>用户名: `+username+`</p>
            <p>电话: `+tel+`</p>
            <p>邮箱: `+email+`</p>
        `,
    };

    transporter.sendMail(mailOptions, (error, info) => {
        if (error) {
            console.log(error);
            res.status(500).json({
                success: false,
                message: 'Failed to send email'
            });
        } else {
            switch (language) {
                case "jp":
                    res.sendFile('./sendSuccessful.html', { root: path.dirname(require.main.filename) });
                    break;
                case "en":
                    res.sendFile('en/sendSuccessful.html', { root: path.dirname(require.main.filename) });
                    break;
                case "cn":
                    res.sendFile('cn/sendSuccessful.html', { root: path.dirname(require.main.filename) });
                    break;
                default:
                    res.sendFile('./sendSuccessful.html', { root: path.dirname(require.main.filename) });
                    break;
            }
        }
    });
});

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});