#!/usr/bin/env node /** * 邮件发送测试脚本 * 用于测试 SMTP 配置是否正确 * * 使用方法: * node scripts/test-email.js <收件人邮箱> */ require('dotenv').config() const nodemailer = require('nodemailer') // 获取命令行参数 const recipientEmail = process.argv[2] if (!recipientEmail) { console.error('❌ 错误:请提供收件人邮箱地址') console.log('使用方法:node scripts/test-email.js <收件人邮箱>') process.exit(1) } // 验证环境变量 const requiredEnvVars = ['SMTP_HOST', 'SMTP_PORT', 'SMTP_USER', 'SMTP_PASS', 'SMTP_FROM'] const missingVars = requiredEnvVars.filter(varName => !process.env[varName]) if (missingVars.length > 0) { console.error('❌ 错误:缺少必要的环境变量:') missingVars.forEach(varName => console.error(` - ${varName}`)) console.log('\n请检查 .env 文件配置') process.exit(1) } // 显示配置信息 console.log('📧 邮件配置信息:') console.log(` SMTP 服务器: ${process.env.SMTP_HOST}`) console.log(` SMTP 端口: ${process.env.SMTP_PORT}`) console.log(` 发件人: ${process.env.SMTP_FROM}`) console.log(` 收件人: ${recipientEmail}`) console.log('') // 创建传输器 const transporter = nodemailer.createTransport({ host: process.env.SMTP_HOST, port: parseInt(process.env.SMTP_PORT || '465'), secure: true, auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS, }, }) // 测试邮件内容 const mailOptions = { from: process.env.SMTP_FROM, to: recipientEmail, subject: '[测试] 中华家谱邮件服务测试', html: `

✅ 邮件服务测试成功

您好,

这是一封来自 中华家谱系统 的测试邮件。

配置信息

如果您收到这封邮件,说明邮件服务配置正确,可以正常发送邮件。


此邮件由中华家谱系统自动发送,请勿回复。
如有问题,请联系系统管理员。

`, } // 发送测试邮件 console.log('📤 正在发送测试邮件...') transporter.sendMail(mailOptions, (error, info) => { if (error) { console.error('❌ 邮件发送失败:') console.error(error) process.exit(1) } else { console.log('✅ 邮件发送成功!') console.log(` Message ID: ${info.messageId}`) console.log(` Response: ${info.response}`) console.log('') console.log('请检查收件箱(可能在垃圾邮件中)') } })