```typescript // This file is auto-generated, don't edit it // 依赖的模块可通过下载工程中的模块依赖文件或右上角的获取 SDK 依赖信息查看 import Dysmsapi20170525, * as $Dysmsapi20170525 from '@alicloud/dysmsapi20170525'; import OpenApi, * as $OpenApi from '@alicloud/openapi-client'; import Util, * as $Util from '@alicloud/tea-util'; import { env } from '../../config/env.ts'; export class SMS { /** * @remarks * 使用AK&SK初始化账号Client * @returns Client * * @throws Exception */ static createClient(): Dysmsapi20170525 { // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378664.html。 if (!env.deploy?.alicloud) { throw new Error("Aliyun SMS configuration is required"); } const { accessKeyId, accessKeySecret } = env.deploy.alicloud; let config = new $OpenApi.Config({ accessKeyId, accessKeySecret, }); // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi config.endpoint = `dysmsapi.aliyuncs.com`; return new (Dysmsapi20170525 as any).default(config); } /** * 发送短信 * @param phoneNumber 手机号 * @param code 验证码 * @param templateCode 模板代码,默认使用配置的验证码模板 * @param signName 短信签名,默认使用配置的签名 */ static async sendVerificationSMS( phoneNumber: string, code: string, templateCode?: string, signName?: string ): Promise { let client = this.createClient(); let sendSmsRequest = new $Dysmsapi20170525.SendSmsRequest({ signName: signName || (env.sms?.defaultSignName || "多八多"), templateCode: templateCode || (env.sms?.defaultTemplateCode || "SMS_164760103"), phoneNumbers: phoneNumber, templateParam: JSON.stringify({code: code}), }); let runtime = new $Util.RuntimeOptions({ }); try { // 发送短信 const result = await client.sendSmsWithOptions(sendSmsRequest, runtime); console.log("SMS sent successfully:", result); return true; } catch (error: unknown) { // 错误处理 const err = error as { message?: string, data?: { Recommend?: string } }; console.error("SMS sending failed:", err.message); if (err.data && err.data["Recommend"]) { console.error("Recommendation:", err.data["Recommend"]); } return false; } } } ```