tencent_sms 0.2.0 copy "tencent_sms: ^0.2.0" to clipboard
tencent_sms: ^0.2.0 copied to clipboard

Tencent Cloud SMS SDK for Dart/Flutter - verification code, batch send, CSV template mapping

tencent_sms #

pub package

Tencent Cloud SMS SDK for Dart/Flutter - Supporting verification code sending, batch sending, CSV template mapping, and multi-scene templates.

中文文档

Features #

  • Verification Code Sending - Single verification code SMS sending
  • Batch Sending - Support batch sending to multiple phone numbers
  • Multi-scene Templates - Different templates for login/registration/password reset
  • CSV Template Mapping - Support reading template IDs from CSV exported from Tencent Cloud console
  • TC3 Signature - Using the latest Tencent Cloud API signature algorithm
  • Pure Dart - No framework dependency, supports Flutter and server-side

Installation #

dependencies:
  tencent_sms: ^0.2.0

Quick Start #

import 'package:tencent_sms/tencent_sms.dart';

void main() async {
  final config = TencentSmsConfig(
    secretId: 'your-secret-id',
    secretKey: 'your-secret-key',
    smsSdkAppId: '1400000000',
    signName: 'YourSignName',
    region: 'ap-guangzhou',
    verificationTemplateId: '123456',
  );

  final client = TencentSmsClient(config);

  try {
    final response = await client.sendVerificationCode(
      phoneNumber: '+8613800138000',
      verificationCode: '123456',
    );
    print('Sent successfully: ${response.requestId}');
  } catch (e) {
    print('Failed to send: $e');
  } finally {
    client.close();
  }
}

Usage #

Send Verification Code #

// Single verification code (using default template)
await client.sendVerificationCode(
  phoneNumber: '+8613800138000',
  verificationCode: '123456',
);

// Specify template ID
await client.sendVerificationCode(
  phoneNumber: '+8613800138000',
  verificationCode: '123456',
  templateId: '789012',
);

Multi-scene Templates #

final config = TencentSmsConfig(
  // ...basic config
  templateCsvPath: 'config/sms/templates.csv',
  verificationTemplateNameLogin: 'Login Verification',
  verificationTemplateNameRegister: 'Registration Verification',
  verificationTemplateNameResetPassword: 'Password Reset Verification',
);

final client = TencentSmsClient(config);

// Login scene
await client.sendVerificationCodeForScene(
  scene: SmsVerificationScene.login,
  phoneNumber: '+8613800138000',
  verificationCode: '123456',
);

// Registration scene
await client.sendVerificationCodeForScene(
  scene: SmsVerificationScene.register,
  phoneNumber: '+8613800138000',
  verificationCode: '654321',
);

Batch Sending #

final response = await client.sendSms(
  phoneNumbers: ['+8613800138000', '+8613800138001'],
  templateId: '123456',
  templateParams: ['Order shipped', 'SF Express', 'SF123456'],
);

for (final status in response.statuses) {
  print('${status.phoneNumber}: ${status.isOk ? 'Success' : status.message}');
}

Configuration #

Parameter Required Description
secretId Yes Tencent Cloud SecretId
secretKey Yes Tencent Cloud SecretKey
smsSdkAppId Yes SMS SDK AppID
signName Yes SMS signature
region No Region, default ap-guangzhou
verificationTemplateId No Verification template ID (highest priority)
templateCsvPath No Template CSV file path
verificationTemplateNameLogin No Login template name
verificationTemplateNameRegister No Registration template name
verificationTemplateNameResetPassword No Password reset template name

Phone Number Format #

Supports the following formats, automatically converted to E.164 format:

  • +8613800138000 - E.164 format (used as-is)
  • 13800138000 - 11-digit Chinese mobile number (auto-prefixed with +86)
  • 008613800138000 - International format (auto-converted)

Exception Handling #

try {
  await client.sendVerificationCode(...);
} on TencentSmsConfigException catch (e) {
  // Configuration error
  print('Config error: ${e.message}');
} on TencentSmsSendException catch (e) {
  // Send failure
  print('Send failed: ${e.message} (${e.code})');
} on TencentSmsHttpException catch (e) {
  // HTTP request failure
  print('Network error: HTTP ${e.statusCode}');
}

Serverpod Integration #

If you use Serverpod, we recommend using tencent_sms_serverpod package for reading config from passwords.yaml:

dependencies:
  tencent_sms_serverpod: ^0.2.0

See tencent_sms_serverpod for details.

Resources #

License #

MIT License

0
likes
150
points
16
downloads

Documentation

API reference

Publisher

verified publisherdartpub.tijingapp.com

Weekly Downloads

Tencent Cloud SMS SDK for Dart/Flutter - verification code, batch send, CSV template mapping

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

http, tencent_cloud_api

More

Packages that depend on tencent_sms