如何使用Twilio API向多个号码群发短信(C#实现)
批量发送短信解决方案
不需要使用Twilio Conversations API,该API针对的是多用户对话、聊天线程等场景,批量发送短信直接基于你已用的Messaging API即可实现。以下是两种可行的实现方式:
方式一:循环逐个发送
这是最直接的方式,遍历号码列表逐个发起发送请求:
TwilioClient.Init(_settingService.TWilioAccountSid, _settingService.TwilioAuthToken); // 目标号码列表(需带正确的国家代码格式) var targetNumbers = new List<string> { "+1234567890", "+0987654321", "+1122334455" }; var messageContent = "你的批量短信内容"; var twilioFromNumber = new Twilio.Types.PhoneNumber("你的Twilio发送号码"); foreach (var number in targetNumbers) { try { var sentMessage = await MessageResource.CreateAsync( body: messageContent, from: twilioFromNumber, to: new Twilio.Types.PhoneNumber(number) ); // 可选:记录发送成功的SID或其他信息 } catch (Twilio.Exceptions.ApiException ex) { // 处理发送失败逻辑,比如日志记录、标记失败号码 } }
方式二:并发发送(提高效率)
如果号码数量较多,可以用异步并发发送提升速度,但需注意Twilio的速率限制(避免触发429限流错误):
TwilioClient.Init(_settingService.TWilioAccountSid, _settingService.TwilioAuthToken); var targetNumbers = new List<string> { "+1234567890", "+0987654321", "+1122334455" }; var messageContent = "你的批量短信内容"; var twilioFromNumber = new Twilio.Types.PhoneNumber("你的Twilio发送号码"); // 生成发送任务集合 var sendTasks = targetNumbers.Select(async number => { try { return await MessageResource.CreateAsync( body: messageContent, from: twilioFromNumber, to: new Twilio.Types.PhoneNumber(number) ); } catch (Twilio.Exceptions.ApiException ex) { // 处理单个号码发送失败 return null; } }); // 等待所有发送任务完成 var sendResults = await Task.WhenAll(sendTasks); // 遍历结果处理(比如统计成功/失败数量) var successfulCount = sendResults.Count(result => result != null);
注意事项
- 号码格式验证:所有目标号码必须包含正确的国家代码(如+1、+86),否则会发送失败。
- 速率限制:Twilio根据套餐设定短信发送速率,并发发送时建议控制并发数,超出限制会返回429错误,可通过分批发送或添加延迟规避。
- 错误处理:每个号码的发送是独立请求,需单独处理每个请求的异常,避免单个号码失败导致整个批量任务中断。
内容的提问来源于stack exchange,提问作者levj1
相关产品推荐
相关产品推荐

