网站里要做个短信发送功能,购买过这种服务的兄弟能介绍个好一点的短信服务提供商吗。
解决方案 »
- 关于一个SESSION的问题
- session存验证码的值
- 我用到的三种SQLHelper(三)数据访问层SqlStringConstructor
- 文件下载问题:我在下载列表(gridview中)显示文件的地址,如何做成可以下载的~
- 当前时间-7 天得到7天前的时间,怎么写;
- 如何在Asp.net程序中,获得水晶报表中公式字段计算的结果
- 在asp.net中不用 DataList 和 DataGrid 将数据库中的数据取出来在页面中写脚本可以
- 一个安装问题,请帮忙。
- asp.net加载....
- WebApplicatoin运行时出错,请帮忙.
- mvc表单的问题
- 用excel表中的按扭来更新数据库表数据
本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考。 适合人群 须满足一下条件之一,如果以下3个条件您都不满足,为节约您宝贵的时间,请终止阅读本篇文章。 条件如下: 1.一条短信内容进行短信群发的目标手机数量不能太大,否则出现严重的短信延时。 2.不想买短信猫之类的设备,同时又觉得部分国有电信单位提供的短信接口不好用,或者认为其服务不够好。 3.担心网络上短信sp供应商信息不真实,毕竟大部分短信供应商不能通过当面交易。 看到这里说明您对我的解决方案是感兴趣的,我这样解决的: 找过几家国有企业短信sp供应商,效果比我想象的要差很多,于是直接在网络上找提供类似服务的短信供应商。发现有很多这样的民营sp短信供应商的服务都是通过网银或者支付宝进行购买。这又让我担心是骗钱的。说实在的挺苦恼的,甚至有朋友建议直接买个几百元的低端多普达,在windows mobile 内写一个自动发送短信的功能充当短信猫。后来苦苦寻觅中我发现了 悠逸企业短信平台(申明:无任何广告嫌疑!)可以购买一百元1000条手机短信而且注册后可以先试用10条短信。将10条试用完后,我用信用卡通过其网站购买了100元短信。心想如果被骗了,这样损失也不会很大。详细步骤如下: 1.在其平台上注册一个属于自己的用户名。 2.在我们的网站或者类库中加入这段方法 (注:此方法不是官方提供的,是我看完官方的API后用C#编写) 1 public static bool SendMobileMsg(string msgContent, List<string> destListPhones) 2 { 3 try 4 { 5 bool result = false; 6 string strPhones = string.Join(";", destListPhones.ToArray()); 7 strPhones += ";"; 8 var encoding = System.Text.Encoding.GetEncoding("GB2312"); 9 10 string postData = string.Format("uid=用户名&pwd=密码&mobile={0};&msg={1}&dtime=", strPhones, msgContent);11 12 byte[] data = encoding.GetBytes(postData);13 14 // 定义 WebRequest15 HttpWebRequest myRequest =16 (HttpWebRequest)WebRequest.Create("http://www.smsadmin.cn/smseting/wwwroot/api/post_send/");17 18 myRequest.Method = "POST";19 myRequest.ContentType = "application/x-www-form-urlencoded";20 myRequest.ContentLength = data.Length;21 22 Stream newStream = myRequest.GetRequestStream();23 24 //发送数据25 newStream.Write(data, 0, data.Length);26 newStream.Close();27 28 // 得到 Response29 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();30 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);31 string content = reader.ReadToEnd();32 33 if (content.Substring(0, 1) == "0")34 result = true;35 else36 {37 if (content.Substring(0, 1) == "2") //余额不足38 {39 //"手机短信余额不足";40 //TODO41 }42 else43 {44 //短信发送失败的其他原因,请参看官方API45 }46 result = false;47 }48 49 return result;50 }51 catch52 {53 return false;54 }55 56 }
很“干净”的调用,没有WebService也没有COM。唯一要注意的就是编码用 GB2312 否则您收到短信的中文部分都是乱码,另外第10行的用户名和密码被硬编码了,应写在配置文件内。
public static bool SendMobileMsg(string msgContent, List<string> destListPhones)
{
try
{
bool result = false;
string strPhones = string.Join(";", destListPhones.ToArray());
strPhones += ";";
var encoding = System.Text.Encoding.GetEncoding("GB2312");
string postData = string.Format("uid=用户名&pwd=密码&mobile={0};&msg={1}&dtime=", strPhones, msgContent);
byte data = encoding.GetBytes(postData);
// 定义 WebRequest
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create("http://www.smsadmin.cn/smseting/wwwroot/api/post_send/");
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
//发送数据
newStream.Write(data, 0, data.Length);
newStream.Close();
// 得到 Response
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.Default);
string content = reader.ReadToEnd();
if (content.Substring(0, 1) == "0")
result = true;
else
{
if (content.Substring(0, 1) == "2") //余额不足
{
//"手机短信余额不足";
//TODO
}
else
{
//短信发送失败的其他原因,请参看官方API
}
result = false;
}
return result;
}
catch
{
return false;
}
}