const Dm20151123 = require('@alicloud/dm20151123') const OpenApi = require('@alicloud/openapi-client') const TeaUtil = require('@alicloud/tea-util') let client = null function createClient() { if (client) return client const config = new OpenApi.Config({ accessKeyId: process.env.ALIYUN_ACCESS_KEY_ID, accessKeySecret: process.env.ALIYUN_ACCESS_KEY_SECRET, }) config.endpoint = process.env.ALIYUN_DM_ENDPOINT || 'dm.aliyuncs.com' client = new Dm20151123.default(config) return client } async function sendEmailCode(toAddress, code) { try { console.log('[Email] Sending code to:', toAddress) console.log('[Email] Using template ID:', process.env.ALIYUN_DM_TEMPLATE_ID) console.log('[Email] Using account name:', process.env.ALIYUN_DM_ACCOUNT_NAME) const dmClient = createClient() const template = new Dm20151123.SingleSendMailRequestTemplate({ templateData: { code }, templateId: process.env.ALIYUN_DM_TEMPLATE_ID, }) const request = new Dm20151123.SingleSendMailRequest({ template, accountName: process.env.ALIYUN_DM_ACCOUNT_NAME, addressType: 1, replyToAddress: false, toAddress, subject: process.env.ALIYUN_DM_DEFAULT_SUBJECT || '登录验证码', }) console.log('[Email] Request prepared:', JSON.stringify(request, null, 2)) const runtime = new TeaUtil.RuntimeOptions({}) await dmClient.singleSendMailWithOptions(request, runtime) console.log('[Email] Send success') return { success: true } } catch (error) { const message = error.message || String(error) console.error('[Email] Send error:', message) console.error('[Email] Error details:', error) return { success: false, message } } } module.exports = { sendEmailCode }