const nodemailer = require('nodemailer'); // 邮件配置 - 使用环境变量或默认配置 // 根据QQ邮箱官方文档配置SMTP服务器 const emailConfig = { host: process.env.EMAIL_HOST || 'smtp.qq.com', port: process.env.EMAIL_PORT || 587, // 使用STARTTLS的端口 secure: false, // 587端口使用STARTTLS auth: { user: process.env.EMAIL_USER || '739239437@qq.com', // QQ邮箱完整地址 pass: process.env.EMAIL_PASS || 'zyggcylcanbgbddc' // QQ邮箱授权码(不是QQ密码) }, tls: { rejectUnauthorized: false } }; // 接收邮箱配置 const receiverEmail = process.env.ADMIN_EMAIL || '1661073856@qq.com'; // 检查邮件配置是否有效 // 只要有邮箱用户名和密码/授权码就认为配置有效 const isEmailConfigured = emailConfig.auth.user && emailConfig.auth.pass && emailConfig.auth.user.trim() !== '' && emailConfig.auth.pass.trim() !== ''; // 创建邮件传输器(仅在配置有效时) const transporter = isEmailConfigured ? nodemailer.createTransport(emailConfig) : null; console.log('邮件服务配置状态:', { configured: isEmailConfigured, host: emailConfig.host, port: emailConfig.port, user: emailConfig.auth.user, hasPassword: !!emailConfig.auth.pass }); /** * 发送联系我们留言通知邮件 * @param {Object} contactData 联系信息 * @returns {Promise} 发送结果 */ async function sendContactNotification(contactData) { try { // 检查邮件配置是否有效 if (!isEmailConfigured || !transporter) { console.log('邮件服务未配置,跳过发送通知邮件'); return false; } const { name, email, phone, company, subject, message, createdAt } = contactData; const mailOptions = { from: emailConfig.auth.user, to: receiverEmail, subject: `【网站留言】${subject}`, html: `

新的联系我们留言

联系人信息

姓名: ${name}

邮箱: ${email}

${phone ? `

电话: ${phone}

` : ''} ${company ? `

公司: ${company}

` : ''}

留言时间: ${new Date(createdAt).toLocaleString('zh-CN')}

留言主题

${subject}

留言内容

${message.replace(/\n/g, '
')}

提示:请及时回复客户留言,可直接回复到客户邮箱:${email}

` }; const result = await transporter.sendMail(mailOptions); console.log('邮件发送成功:', result.messageId); return true; } catch (error) { console.error('邮件发送失败:', error); return false; } } /** * 发送自动回复邮件给客户 * @param {Object} contactData 联系信息 * @returns {Promise} 发送结果 */ async function sendAutoReply(contactData) { try { // 检查邮件配置是否有效 if (!isEmailConfigured || !transporter) { console.log('邮件服务未配置,跳过发送自动回复邮件'); return false; } const { name, email, subject } = contactData; const mailOptions = { from: emailConfig.auth.user, to: email, subject: `感谢您的留言 - ${subject}`, html: `

感谢您的留言!

尊敬的 ${name},

感谢您通过我们的网站联系我们。我们已经收到您的留言,我们的工作人员会在24小时内回复您。

您的留言主题:${subject}

提交时间:${new Date().toLocaleString('zh-CN')}

如有紧急事务,请直接拨打我们的客服电话:400-xxx-xxxx


此邮件为系统自动发送,请勿直接回复。
如需联系我们,请访问:https://yourwebsite.com

` }; const result = await transporter.sendMail(mailOptions); console.log('自动回复邮件发送成功:', result.messageId); return true; } catch (error) { console.error('自动回复邮件发送失败:', error); return false; } } module.exports = { sendContactNotification, sendAutoReply };