public async Task <ResponseData> SendAsync(ChuangLanSmsMessage message) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (_config.UseMarketingSms) { _chuangLanMarketingAccount.CheckParameters(); } else { _chuangLanCodeAccount.CheckParameters(); } message.CheckParameters(); var bizParams = new SortedDictionary <string, string>() { { "account", _config.UseMarketingSms ? _chuangLanMarketingAccount.SmsUser : _chuangLanCodeAccount.SmsUser }, { "password", _config.UseMarketingSms ? _chuangLanMarketingAccount.SmsKey : _chuangLanCodeAccount.SmsKey }, { "msg", message.Content }, { "phone", message.GetPhoneString() }, }; if (message.SendTime.HasValue) { bizParams.Add("sendtime", message.SendTime.Value.ToString("yyyyMMddHHmm")); } if (message.Report.HasValue && message.Report.Value) { bizParams.Add("report", "true"); } if (!string.IsNullOrWhiteSpace(message.Extend)) { bizParams.Add("extend", message.Extend); } if (!string.IsNullOrWhiteSpace(message.Uid)) { bizParams.Add("uid", message.Uid); } _proxy.ApiConfig.HttpHost = new Uri(_config.UseMarketingSms?_chuangLanMarketingAccount.ApiUrl:_chuangLanCodeAccount.ApiUrl); return(await _proxy.SendMessageAsync(bizParams) .Retry(_config.RetryTimes) .Handle().WhenCatch <Exception>(e => { _exceptionHandler?.Invoke(e); return ReturnAsDefautlResponse(); })); }