当前位置: 首页 > 编程日记 > 正文

为 Asp.net 网站新增发送手机短信功能

 本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考。

适合人群 须满足一下条件之一,如果以下3个条件您都不满足,为节约您宝贵的时间,请终止阅读本篇文章。

条件如下:

1.一条短信内容进行短信群发的目标手机数量不能太大,否则出现严重的短信延时。

2.不想买短信猫之类的设备,同时又觉得部分国有电信单位提供的短信接口不好用,或者认为其服务不够好。

3.担心网络上短信sp供应商信息不真实,毕竟大部分短信供应商不能通过当面交易。

看到这里说明您对我的解决方案是感兴趣的,我这样解决的:

找过几家国有企业短信sp供应商,效果比我想象的要差很多,于是直接在网络上找提供类似服务的短信供应商。发现有很多这样的民营sp短信供应商的服务都是通过网银或者支付宝进行购买。这又让我担心是骗钱的。说实在的挺苦恼的,甚至有朋友建议直接买个几百元的低端多普达,在windows mobile 内写一个自动发送短信的功能充当短信猫。后来苦苦寻觅中我发现了 悠逸企业短信平台(申明:无任何广告嫌疑!)可以购买一百元1000条手机短信而且注册后可以先试用10条短信。将10条试用完后,我用信用卡通过其网站购买了100元短信。心想如果被骗了,这样损失也不会很大。详细步骤如下:

1.在其平台上注册一个属于自己的用户名。

2.在我们的网站或者类库中加入这段方法 (注:此方法不是官方提供的,是我看完官方的API后用C#编写)

复制代码
1 publicstaticbool 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/smsmarketing/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 returnfalse; 54 } 55 56 }
复制代码

很“干净”的调用,没有WebService也没有COM。

唯一要注意的就是编码用 GB2312 否则您收到短信的中文部分都是乱码,另外第10行的用户名和密码被硬编码了,应写在配置文件内。

最后,希望本篇能够帮助到您!

转载于:https://www.cnblogs.com/goodsunny/p/3176601.html

相关文章:

搜索引擎Killed原因排查

问题描述 腾讯云单核2G内存&#xff0c;运行程序的时候&#xff0c;程序有时会挂掉了&#xff0c;设置ulimit -c unlimited之后&#xff0c;想要core文件&#xff0c;结果程序运行的时候&#xff0c;直接提示killed&#xff0c;没有出现core文件 调研查询 killed的原因多是因…

mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8

前言本次搭建目标为1主2从MySQL主从同步结构。采用CentOS8作为操作系统&#xff0c;IP为[10.0.0.211,10.0.0.212,10.0.0.213]。MySQL版本为8.0.19&#xff0c;端口均采用3306。本文仅讲解主从配置&#xff0c;因此安装MySQL的方式请参考安装文档。GTID模式介绍一、GTID Replica…

IO流总结笔记三

​ 字节流&#xff1a; 抽象基类&#xff1a;InputStream&#xff0c; OutputStream。 字节流可以操作任何数据。注意&#xff1a;字符流使用的数组是字符数组。Char [] chs 字节流使用的数组是字节数组。Byte [] bt 转换流&#xff1a; 特点&#xff1a;1&#xff0c;是字节流…

awk1.0 — awk基础

简介 grep&#xff0c;sed&#xff0c;awk被称为Linux文本处理的三剑客&#xff0c;各有特点 grep&#xff1a;适合文本的匹配和查找 sed&#xff1a;编辑匹配到的文本 awk&#xff1a;对文本进行格式化输出 awk简介 awk的基本语法是 awk [options] Pattern {Actions} …

mysql dump 参数_mysqldump常用参数

收集一些常用的mysqldump命令组合。备份数据库1.导出结构不导出数据 **复制代码代码如下:2.导出数据不导出结构3.导出数据和表结构4.导出特定表的结构导入数据&#xff1a;由于mysqldump导出的是完整的SQL语句&#xff0c;所以用mysql客户程序很容易就能把数据导入了&#xff1…

细心看完这篇文章,刷新对Javascript Prototype的理解

var person{name:ninja}; person.prototype.sayNamefunction(){return this.name; } 分析上面这段代码&#xff0c;看看有没有问题&#xff1f; 没错&#xff0c;这段代码是有问题的&#xff0c;我们可以通过Chrome看一下执行结果&#xff1a; 错误提示说找不到sayName 属性&am…

那些值得回味的MySQL的基础知识

那些值得回味的MySQL的基础知识 MySQL零碎知识点整理 题记&#xff1a; 在如今甚是流行的MySQL中有些基础的知识却是我们日常工作中处理问题容易忘却的一部分,所以不能忘了本&#xff0c;那么我们现在就去回忆那些曾经熟悉的基本吧&#xff0c;废话不多说了 基础常识&#xff…

awk2.0 — awk分隔符

再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… awk默认分隔符是空格&#xff0c;分隔符有分为“输入分隔符”和“输出分隔符”。 输入分隔符&#xff1a;awk在处理每一行文本的时候&#xff0c;以默认的空格将文本分隔成一个个单词作为变量。 输出分…

【C++自我精讲】基础系列二 const

【C自我精讲】基础系列二 const 0 前言 分三部分&#xff1a;const用法、const和#define比较、const作用。 1 const用法 const常量&#xff1a;const可以用来定义常量&#xff0c;不可改变&#xff0c;const常量在定义时必须初始化&#xff08;extern修饰时是特例&#xff09;。…

mysql system命令_mysql命令

关闭防火墙和selinux:systemctl stop firewalld.servicesetenforce 0永久关闭防火墙和selinux:systemctl disable firewalld.servicesed -i ‘/^SELINUX/s#enforcing#disabled#g’ /etc/selinux/config安装wget:yum install -y wget国内yum源:wget -O /etc/yum.repos.d/CentOS-…

django教程目录

什么是web框架&#xff1f; Do a web framework ourselves MVC和MTV模式 django的流程和命令行工具 Django的配置文件(settings) Django URL (路由系统) Django Views&#xff08;视图函数&#xff09; Template基础 Models admin的配置 Middleware cache Cookie & Session…

VRRP在企业网中的应用(H3C设备)

一&#xff1a;实验原理①VRRP概述&#xff1a;随着Internet的发展&#xff0c;人们对网络的可靠性的要求越来越高。对于局域网用户来说&#xff0c;能够时刻与外部网络保持联系是非常重要的。通常情况下&#xff0c;内部网络中的所有主机都设置一条相同的缺省路由&#xff0c;…

vue-cli脚手架(框架)

一、创建vue项目 npm install vue-cli -g #-g全局 (sudo)npm install vue-cli -g #mac笔记本vue-init webpack myvue #项目的名字 cd muvue npm install npm run dev 二、目录结构的说明 出现下面这样的图就说明成功了 三、import和require的区别 import一定要放在文件顶部…

poj 1679 次小生成树

次小生成树的求法: 1.Prime法 定义一个二维数组F[i][j]表示点i到点j在最小生成树中的路径上的最大权值。有个知识就是将一条不在最小生成树中的边Edge加入最小生成树时&#xff0c;树中要去掉的边就是Edge连接的两个端点i,j的F[i][j]。这样就能保存找到的生成树时次小生成树。 …

mysql金库模式_Python vault-anyconfig包_程序模块 - PyPI - Python中文网

vaultanyconfig" rel"nofollow">使用加载和转储功能扩展hvac hashicorp vault客户端任何配置。这允许自动混合来自保险库的机密&#xff0c;允许您存储配置填充了所有详细信息的文件保存为机密&#xff0c;然后访问hashicorp保险库将机密加载到内存字典中。支…

awk3.0 — awk变量

awk有一些内置变量和外置变量&#xff0c;内置变量就是awk自带的变量&#xff0c;用户可以拿来直接使用&#xff0c;如FS&#xff0c;OFS等 awk常用内置变量如下几种&#xff1a; FS&#xff1a;输入单词分隔符&#xff0c;默认是空格 OFS&#xff1a;输出单词分隔…

关于yum库的相关问题

局域网共享yum库的两种方式&#xff1a; 一种是基于HTTP的&#xff0c;需要配置httpd。 一种是基于FTP的。需要FTP的支持。 具体设置参数可参照网上的相关教程。 yum库的建立主要涉及到两点&#xff1a; 1、 Yum服务器安装createrepo并创建仓库 2、 安装完成之后&#xff0c;在…

[ JSOI 2015 ] Salesman

\(\\\) \(Description\) 给出一棵以\(1\)为根的\(N\)个节点的树&#xff0c;开始的时候你在\(1\)号节点。 除了\(1\)号节点以外&#xff0c;每个点都有访问次数限制\(t_i\)&#xff0c;即到达该点的次数上限。 除了\(1\)号点每个点还有一个权值\(w_i\)&#xff0c;这个权值可以…

linux安装python2和3版本_Windows下安装Python2和Python3双版本

现在大家常用的桌面操作系统有&#xff1a;Windows、Mac OS、Ubuntu&#xff0c;其中Mac OS 和 ubuntu上都会自带Python。这里我们只介绍下Windows(我用的Win10)环境下的python2.x 和 python3.x 的安装&#xff0c;以及python2.x 与 python3.x 共存时的配置问题。本节内容pytho…

JS+CSS点击弹出登陆框代码

<head><meta http-equiv"Content-Type" content"text/html; charsetgb2312"><title>弹出登录框的实现代码</title></head><body><style type"text/css">body {margin: 0px;padding:0}#div1 {display:…

awk4.0 — awk格式化

awk格式化使用printf函数&#xff0c;类似于C语言中的printf函数 比如 awk {printf "%s\n", $1} test1 上面的方式是awk每次处理一行&#xff0c;然后进行替换的&#xff0c;如果我们想要传入多个参数&#xff0c;此时就需要多个格式化

在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)

想将Button和ListView分别放在屏幕的一左一右。 单纯使用android:gravity和android:layout_gravity不成功。 于是涉及到RelativeLayout 关键为&#xff1a;android:layout_alignParentRight"true" android:layout_alignParentLeft"true" <?xml versio…

Scrapy爬虫-必备插件

必备插件&#xff1a; lxml, an efficient XML and HTML parser parsel, an HTML/XML data extraction library written on top of lxml w3lib, a multi-purpose helper for dealing with URLs and web page encodings twisted, an asynchronous networking framework https://…

python类和对象课件_简单解释Python的类和对象

前言&#xff1a;对象是模拟真实世界&#xff0c;把数据和程序进行封装 。对象 属性 方法我们需要用类来创造一个对象&#xff0c;就像我们要用图纸来造房子一样。在Python中函数名是以小写字母开头 &#xff0c;类名是以大写字母开头。0x00:面向对象(Object Oriented)我们一般…

awk5.0 — awk模式之一

再次重申awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… awk模式&#xff0c;在之前的文章中简单使用了BEGIN和END。这里的模式&#xff0c;其实我们可以理解成是条件&#xff0c;awk是一行行处理数据的&#xff0c;如果满足某个条件awk就处理某一行数据&#x…

CF331A1,331A2

链接&#xff1a;http://codeforces.com/problemset/problem/331/A1 题意&#xff1a;不翻译了。 思路&#xff1a;A1题数据范围小&#xff0c;暴力是可行的&#xff0c;我果断暴力了。不过&#xff0c;话说&#xff0c;除了暴力我还会什么。。。闲话少说。A2的话&#xff0c;采…

SCCM 2012系列9 补丁分发上

HI&#xff0c;今天我会给大家介绍SCCM 2012的补丁分发&#xff0c;分为上中下&#xff0c;当然希望大家多多指教哦 1 服务器配置 1.1 环境要求 如果SCCM和WSUS在同一台服务器上那没什么&#xff0c;但如果WSUS和SCCM分别在不同的服务器上&#xff0c;那么WSUS服务器需要把S…

python基础-垃圾回收机制

垃圾回收 Python中的垃圾回收是以引用计数为主&#xff0c;分代收集为辅。引用计数的缺陷是循环引用的问题。 引用计数 原理&#xff1a;当一个对象的引用被创建或者复制时&#xff0c;对象的引用计数加1&#xff1b;当一个对象的引用被销毁时&#xff0c;对象的引用计数减1&am…

awk 6.0 — awk模式之二

awk的语法 awk [options] ‘Pattern {Actions}’ file1,file2… 之前介绍了三种模式&#xff1a;空模式&#xff0c;关系运算模式&#xff0c;BEGIN/END模式 正则模式 模式可以理解成条件&#xff0c;正则模式就是满足正则表达式条件的&#xff0c;就执行相应的动作&#xf…