2026-02-28 17:57:28 +08:00

57 lines
1.7 KiB
JavaScript

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 }