You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#通过Azure通信服务发送多收件人短信报错求助

解决Azure通信服务多收件人短信发送的类型转换错误

问题根源

Azure通信服务的SmsClient.Send方法存在多个重载:

  • 单收件人场景的重载返回SmsSendResult
  • 多收件人场景(接收string[]类型的to参数)的重载返回IEnumerable<SmsSendResult>,并非List<SmsSendResult>

你直接使用(List<SmsSendResult>)强制转换返回值,会触发类型转换错误——因为IEnumerable接口实例无法直接强制转为List类型。

修正后的代码

有两种可行的修正方式,根据你的业务需求选择:

方式1:用IEnumerable接收结果

如果不需要List专属的操作方法,直接用接口类型接收即可:

IEnumerable<SmsSendResult> sendResults = smsClient.Send(
    from: sms.From,
    to: sms.To,
    message: sms.Body,
    options: new SmsSendOptions(enableDeliveryReport: true)
);

方式2:转为List类型

如果需要使用List的操作(比如索引访问、Add/Remove等),调用ToList()方法转换结果:

List<SmsSendResult> sendResults = smsClient.Send(
    from: sms.From,
    to: sms.To,
    message: sms.Body,
    options: new SmsSendOptions(enableDeliveryReport: true)
).ToList();

额外提示

  • 确保sms.To数组中的每个号码符合ACS格式要求(需包含国家/地区代码,例如+1425XXXXXXX)
  • 可以遍历结果逐个校验短信发送状态:
foreach (var result in sendResults)
{
    if (result.Successful)
    {
        // 处理发送成功逻辑
    }
    else
    {
        // 处理发送失败逻辑,可通过result.ErrorMessage查看错误详情
    }
}

内容的提问来源于stack exchange,提问作者Muthukani K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:22:36