/// <summary>
        ///
        /// </summary>
        /// <param name="sms"></param>
        /// <returns></returns>
        public bool Send(Infrastructure.Sms sms)
        {
            if (sms.Mode != SmsSendMode.TemplateCode)
            {
                throw new AliYunSmsModeNotSupportedException();
            }

            string          phoneNumbers    = string.Join(",", sms.Telephones.Select(a => $"{NationCodeChecks(a.NationCode)}{a.PhoneNumber}"));
            SendSmsResponse responseMessage = aliYunAcsClient.SendSms(phoneNumbers, sms.TemplateCode, Newtonsoft.Json.JsonConvert.SerializeObject(sms.TemplateParameters));

            if (responseMessage.Code.Equals("OK", StringComparison.OrdinalIgnoreCase))
            {
                return(true);
            }
            else
            {
                logger.LogError($"AliYunSmsError:{responseMessage.Message}({responseMessage.Code})");
                throw new AliYunSmsServiceException();
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="sms"></param>
 /// <param name="canceltoken"></param>
 /// <returns></returns>
 public async Task <bool> SendAsync(Infrastructure.Sms sms, CancellationToken canceltoken = default(CancellationToken))
 {
     return(await Task.Run(() => Send(sms)));
 }