/** * persona-studio · 邮件发送工具 * 使用 nodemailer 发送开发完成通知 */ const nodemailer = require('nodemailer'); /** * 创建邮件传输器 * 支持通过环境变量配置 SMTP */ function createTransporter() { const host = process.env.SMTP_HOST || 'smtp.qq.com'; const port = parseInt(process.env.SMTP_PORT || '465', 10); const user = process.env.SMTP_USER || ''; const pass = process.env.SMTP_PASS || ''; if (!user || !pass) { return null; } return nodemailer.createTransport({ host, port, secure: port === 465, auth: { user, pass } }); } /** * 发送邮件 */ async function send({ to, subject, body }) { const transporter = createTransporter(); if (!transporter) { console.log('[Email] SMTP not configured, skipping send to:', to); return { skipped: true, reason: 'SMTP not configured' }; } const info = await transporter.sendMail({ from: `"光湖 Persona Studio" <${process.env.SMTP_USER}>`, to, subject, html: body }); console.log('[Email] Sent:', info.messageId); return { sent: true, messageId: info.messageId }; } /** * 发送开发完成通知 */ async function sendCompletion({ to, dev_id, projectName, summary, files, downloadUrl }) { const subject = `✅ 你的模块已完成 · ${projectName}`; // 生成文件列表 let fileListHtml = ''; if (files && files.length > 0) { fileListHtml = '
HoloLake Era · AGE OS · 人格语言操作系统
', '你好 ' + dev_id + ',
', '你的项目 ' + projectName + ' 已经完成开发!
', '' + (summary || '项目代码已生成') + '
', fileListHtml, downloadHtml, '',
'🌀 铸渊 · 代码守护人格体 · 自动发送
',
'光湖语言人格系统 · HoloLake Era · AGE OS',
'