使用NowSMS Gateway来接收发送短信和彩信

SMS Gateway Jasmin搭建2 二进制部署方式安装RabbitMQ提醒安装rabbitmq repo添加RabbitMQ and Modern Erlang的repo更新yum安装依赖包和程序:开启web管理页面:安装redis官网下载redis压缩包上传服务器解压安装开启redis后台运行安装Python3检查系统是否已安装python配置python3环境变量安装jasmin-sms-gateway安装开启服务 安装RabbitMQ 提醒 官网链接: https://www.rabbitmq.com/install-rpm.html 阅读详情

硬件准备:
GPRS Modem,不同的运营商波段可能不一样,比如Cingular是850/1900 MHz,而China Mobile是900/1800 MHz,购买时要注意.把SIM card插入Modem, SIM要开通GPRS service,把Modem接到COM Port,完成硬件准备。
软件准备:
下载SMS Gateway,我用的是NowSMS Gateway,觉得还可以,支持多种语言字符集,在http://www.nowsms.com/可以下载60天试用版本,网上也有其他的Gateway.

添加GPRS Modem:
由于不同Modem,NowSMS Gateway不一定都能认识,以至于在配置MMS的时候不能认出COM port,我用的WaveCOM的Modem,配彩信时救认不出.
所以要先通过在Windows里添加标准Modem以便NowSMS gateway识别.
Control Panel-->Phone and Modem options-->Modems:
Select Add, follow the wizard, and select appropriate COM port, GPRS Modem could be recognized.


怎样来配置NowSMS Gateway,大部分在其网站有如何配置说明,这里主要讲一下有几个要注意的地方,特别是配置MMS的时候。
如何配置短信可以参考网站的资料(http://www.nowsms.com/documentation/ProductDocumentation/2_way_sms_support.htm),这里就不多说

配置Gateway通过GPRS Modem收发彩信(http://www.nowsms.com/documentation/ProductDocumentation/2_way_mms_support.htm):
大部分内容在里面都有,这里我只提一下通过GPRS Modem来收发彩信,还可以通过网络连接来收发彩信,不过不同的Operator有一定的限制.

配置GPRS Modem接收彩信:
如果Modem加好了没问题,你可以在NowSMS Gateway的SMSC面板 Add的时候就能看到你刚才加的Modem,选择这个Modem就可以了,然后可以按一下Test可以测试一下Modem是否work.
接着可以在Properties里配置MMS Setting.
选择相应的Operator,选择Use Specific Network Connection(GPRS Modem),这时可以在Network Connection里找到刚才添加的Modem,选择即可,然后可以点击Test Connection测试连接是否工作
这样你就可以通过GPRS Modem接收彩信了,如果你配置为存在制定目录的话,接收的彩信将会存在那个目录,每个彩信会有一个.hdr的头文件,和一个放彩信内容
的子目录.

配置GPRS Modem发送彩信:
在MMSC Routing里面选择Add,添加一个Additional Routes,在配置MMS Outbound Routing的Dialog里的Route message to VASP via:选项里选MM1,选择Use Specific Network Connection(GPRS Modem),在Network Connection下拉框里选择刚才添加的Modem连接,OK后,把Default Route设置为这个新添的Route就可以了.

收到彩信后你可以写自己的程序去处理,NowSMS本身也支持配置Php来处理(http://www.nowsms.com/support/bulletins/tb-nowsms-016.htm).
如何用程序来发送SMS和MMS, NowSMS Gateway提供一种Web Menu Interface(http://www.nowsms.com/documentation/ProductDocumentation/the_web_interface/index.htm),你只要把要发的信息,和手机号提交给web server就可以了,接口比较方便易用, SMS用GET方式,MMS用的是POST方式.

发送短信函数(C#):

        private void SendSMSMessage(String strMobile, String strText)
        {
            try
            {
                String request = "http://127.0.0.1:8800/Send%20Text%20Message.htm?PhoneNumber=" + strMobile + "&Text=" + strText + "&InfoCharCounter=&PID=&DCS=&Submit=Submit";

                Uri myUri = new Uri(request);
                // Create a new request to the above mentioned URL.   
                WebRequest myWebRequest = WebRequest.Create(myUri);
                // Assign the response object of 'WebRequest' to a 'WebResponse' variable.
                WebResponse myWebResponse = myWebRequest.GetResponse();
            }
            catch (Exception)
            {
                throw;
            }
        }

发送彩信函数(C#):

        protected byte[] CreateTextData(string boundary, string textFormName, string strText)
        {
            // Build up the post message header.
            StringBuilder sb = new StringBuilder();
            sb.Append("--");
            sb.Append(boundary);
            sb.Append("/r/n");
            sb.Append("Content-Disposition: form-data; name=/"");
            sb.Append(textFormName);
            sb.Append("/"");
            sb.Append("/r/n");
            sb.Append("/r/n");
            sb.Append(strText);
            sb.Append("/r/n");

            // Return te post message header in a byte array encoded as UTF8.
            return Encoding.UTF8.GetBytes(sb.ToString());
        }
        protected byte[] CreateImageFile(string boundary, string fileFormName, string filePath)
        {
            // Build up the post message header.
            StringBuilder sb = new StringBuilder();
            sb.Append("--");
            sb.Append(boundary);
            sb.Append("/r/n");
            sb.Append("Content-Disposition: form-data; name=/"");
            sb.Append(fileFormName);
            sb.Append("/"; filename=/"");
            sb.Append(Path.GetFileName(filePath));
            sb.Append("/"");
            sb.Append("/r/n");
            sb.Append("Content-Type: ");
            sb.Append("image/pjpeg");
            sb.Append("/r/n");
            sb.Append("/r/n");

            // Return te post message header in a byte array encoded as UTF8.
            return Encoding.UTF8.GetBytes(sb.ToString());
        }

        private void SendMMSMessage(String strMobile, String strSubject, String strText, String strImagePath)
        {
            // Create a FileInfo object of the file.
            FileInfo fileInfo = new FileInfo(strImagePath);

            Uri myUri = new Uri("http://127.0.0.1:8800/Send%20MMS%20Message.htm");

            // Instantiate a new WebRequest.
            string boundary = "----------" + DateTime.Now.Ticks.ToString("x");
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(myUri);
            webrequest.Method = "POST";
            webrequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
            webrequest.Referer = "http://127.0.0.1:8800/Send%20MMS%20Message.htm";
            webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
            webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.1; .NET CLR 2.0.50727)";
            webrequest.KeepAlive = true;

            // Create the post message header.
            // Create PhoneNumber
            byte[] postPhoneNumber = CreateTextData(boundary, "PhoneNumber", strMobile);

            // Create MMSFrom
            byte[] postMMSFrom = CreateTextData(boundary, "MMSFrom", "");

            // Create MMSSubject
            byte[] postMMSSubject = CreateTextData(boundary, "MMSSubject", strSubject);

            // Create MMSText
            byte[] postMMSText = CreateTextData(boundary, "MMSText", strText);

            // Create MMSFile
            byte[] postImageBytes = CreateImageFile(boundary, "MMSFile", strImagePath);

            //Create Submit
            byte[] postSubmitBytes = CreateImageFile(boundary, "Submit", "Submit");

            // Build the trailing boundary string as a byte array
            // ensuring the boundary appears on a line by itself
            byte[] boundaryBytes = Encoding.ASCII.GetBytes("/r/n--" + boundary + "/r/n");

            // Create the Stream objects.
            FileStream fileStream = null;
            Stream requestStream = null;

            try
            {
                // Instantiate the local FileStream.
                fileStream = new FileStream(strImagePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

                long length = postPhoneNumber.Length + postMMSFrom.Length + postMMSSubject.Length + postMMSText.Length
                    + postImageBytes.Length + fileStream.Length + postSubmitBytes.Length + boundaryBytes.Length;

                webrequest.ContentLength = length;

                // Get the request stream from the webrequest.
                requestStream = webrequest.GetRequestStream();

                // Write out our post header
                requestStream.Write(postPhoneNumber, 0, postPhoneNumber.Length);
                requestStream.Write(postMMSFrom, 0, postMMSFrom.Length);
                requestStream.Write(postMMSSubject, 0, postMMSSubject.Length);
                requestStream.Write(postMMSText, 0, postMMSText.Length);
                requestStream.Write(postImageBytes, 0, postImageBytes.Length);

                // Write out the file contents
                byte[] buffer = new Byte[fileStream.Length];
                int bytesRead = 0;
                long totalBytes = 0;

                // Read the bytes from the local file stream.
                while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    // Write the readed bytes to the request stream.
                    requestStream.Write(buffer, 0, bytesRead);
                    totalBytes += bytesRead;
                }

                // Write submit
                requestStream.Write(postSubmitBytes, 0, postSubmitBytes.Length);

                // Write out the trailing boundary
                requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);

                // Get response.
                using (WebResponse response = webrequest.GetResponse())
                {
                    Stream responseStream = null;

                    try
                    {
                        // Get response stream.
                        responseStream = response.GetResponseStream();

                        StreamReader streamRead = new StreamReader(responseStream);

                        streamRead.Close();

                    }
                    finally
                    {
                        // Close response stream when it exists.
                        if (responseStream != null)
                        {
                            responseStream.Close();
                        }

                        // Close the response.
                        response.Close();
                    }
                }
            }
            finally
            {
                // Cleanup uses.
                if (requestStream != null)
                {
                    try
                    {
                        requestStream.Close();
                    }
                    catch
                    {
                        // Eat up exception.
                    }
                }

                if (fileStream != null)
                {
                    try
                    {
                        fileStream.Close();
                    }
                    catch
                    {
                        // Eat up exception.
                    }
                }

                if (webrequest != null)
                {
                    try
                    {
                        // Abort webrequest.
                        webrequest.Abort();
                    }
                    catch (WebException caught)
                    {
                        // Eat up exception and close
                        // response then exists.
                        if (caught.Response != null)
                        {
                            caught.Response.Close();
                        }
                    }
                }
            }
        }

这里只是一些随写,更具体的信息可以参考NowSMS的网站,和GPRS Modem的厂商站点和手册.

如果Modem有问题,或者想知道Modem是否支持SMS和MMS,可以使用HyperTerminal连接Modem测试,有关GPRS Modem的一些Command可以在网络上搜到.
AT+CREG? - if registered on network second value should be 1
AT+COPS? - returns Network operator eg. Cingular
AT+CSQ - checks signal strength, value should be greater than 10 

SMS Gateway Jasmin 搭建3 Jasmin UI搭建依赖环境配置Py4web 搭建Git拉取UI代码运行py4web 依赖环境配置 参考链接: https://github.com/gavin-orange/jasmin_smsc_gui 这个UI的依赖环境有3个: Python3, 版本要在3.5以上 可正常运行的SMS Jasmin 环境,这个可以参考我之前的两篇文章 Py4web 框架 Py4web 搭建 cd /opt python3 -m venv py4web source py4web/bin/activate cd 阅读详情

相关推荐

sms-gateway:用于发送、记录和测试短消息服务 (SMS) 的包装服务

短信网关 用于发送、记录和测试短消息服务 (SMS) 的包装服务 SMS Gateway 有助于提高开发效率,将您的应用程序与 3rd 方 SMS 发送器 API 提供商分开,本地开发用于集成测试和批量发送而无需成本,并且故障转移添加了多个提供商以提高发送率。 aasaam 软件开发组

Linux 通过NowSMS + 彩信猫 发送彩信实践

通过彩信猫发彩信的实质是实现相应的协议,然后将数据已数据流的形式chua

u013275741的专栏 1563

NowSMS环境搭建

NowSMS工具用于手机发送信息的测试,本文图文并茂介绍如何搭建NowSMS测试环境,方便新手快速搭建手机测试环境。

NOWSMS简介

<br />NOWSMS简介<br /> ====================<br />Now SMS/MMS Gateway(NowSMS)是一套SMS和MMS的内容交付解决方案。NowSMS是部署和开发SMS、MMS和WAP Push方案的快捷方法,可以用于Windows 2000/XP下的SMS网关、MMS网关、WAP Push网关以及多媒体消息中心。<br />NOWSMS的官方网站是:http://www.nowsms.com/ ,可以下载60天的试用版本来搭建自己的彩信中心;以

Programer From Scrach 4360

nowSms 短信、彩信(可用其中mmscomp.exe生成彩信文件)

Now SMS/MMS Gateway(NowSMS)是一套SMS和MMS的内容交付解决方案。NowSMS是部署和开发SMS、MMS和WAP Push方案的快捷方法,可以用于Windows 2000/XP下的SMS网关、MMS网关、WAP Push网关以及多媒体消息中心。

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 263

使用NOWSMS搭建自己的彩信中心

NOWSMS简介====================Now SMS/MMS Gateway(NowSMS)是一套SMS和MMS的内容交付解决方案。NowSMS是部署和开发SMS、MMS和WAP Push方案的快捷方法,可以用于Windows 2000/XP下的SMS网关、MMS网关、WAP Push网关以及多媒体消息中心。NOWSMS的官方网站是:http://www.nowsms

googoo3的专栏 3849

Data+AI新玩法:Text2SQL让数据查询变得如此简单!

你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。

Ase5gqe的博客 865

基于Java的实例源码-短信网关平台(值得一看)

短信网关平台是一个重要的应用程序,可用于发送和接收短信。在这个平台上,用户可以通过API接口或网页界面发送短信、管理短信模板、查询短信发送记录等操作。当用户通过API接口或网页界面发送短信时,短信网关平台将会调用短信供应商的API来实际发送短信。2. **短信发送**:短信发送模块提供API接口和网页界面,用于发送短信。4. **发送记录**:发送记录模块记录了所有的短信发送记录,包括发送时间、发送状态、接收方号码等。3. **短信模板**:短信模板模块用于管理短信模板,用户可以创建、编辑和删除短信模板。

woaimx_1314的博客 1329

分析android逆向的学习路线

俗话说:“一入逆向深似海,从此头发是路人”。 安卓逆向作为当下热门行业“网络安全”的主要技术之一,已经受到了越来越多人的青睐。但是很多刚入门的新手小伙伴对于怎么去学习却还很是迷糊。本文就分享一下android逆向的学习路线供大家参考。 目前学习安卓逆向的人群大约分为两种: 第一种是完全没有任何基础的计算机纯小白; 第二种是本来就做开发懂编程的IT行业人员。 我们就针对这两个不同的人群做一下安卓逆向的学习路线分析。 一、无基础小白想入门 作为没有任何基础想要入门的计算机纯小白,学习上推荐参照以下步骤: (一

Hacker_by_V的博客 3078

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 326

推荐文章:轻松实现短信网关 —— Android SMS Gateway 应用程序

推荐文章:轻松实现短信网关 —— Android SMS Gateway 应用程序 android-sms-gatewaySimple SMS gateway running on Android项目地址:https://gitcode.com/gh_mirrors/and/android-sms-gateway 项目介绍 在移动互联网时代,消息传递的方式变得多样化且高效,但传统的短信通知仍然有...

gitblog_00083的博客 986

游戏封包抓取实战:雷电模拟器+ProxyDroid+查尔斯3.93+WPE全流程解析

本文详细解析了使用雷电模拟器、ProxyDroid、查尔斯3.93和WPE进行游戏封包抓取的全流程实战。通过环境搭建、代理配置与工具协同,手把手教你抓取HTTP/HTTPS及原始Socket数据,涵盖从流量转向、证书安装到数据分析和常见问题排查,是学习游戏网络协议分析与安全测试的实用指南。

u8v9w0x1y的博客 445

使用NOWSMS搭建自己的彩信中心- -

使用NOWSMS搭建自己的彩信中心- -Tag: NOWSMS MMS 彩信中心 NOWSMS简介====================Now SMS/MMS Gateway(NowSMS)是一套SMS和MMS的内容交付解决方案。NowSMS是部署和开发SMS、MMS和WAP Push方案的快捷方法,...

ealpha 829

Allegro174版本如何关闭模块复用后铜皮自动从动态变成静态操作指导

在用Allegro进行PCB设计的时候,模块复用是使用的十分频繁的操作,当Allegro升级到了174 S034版本的时候,当使用模块复用的功能的时候,模块内的铜皮会自动动静转换,大部分情况是不需要的。版本如何关闭模块复用后铜皮自动从动态变成静态操作指导。如何关闭这个功能,具体操作如下。

weixin_54787054的博客 1261

爬虫逆向:Hook 技术原理与实战

Hook 技术​(钩子技术)是一种通过拦截和修改程序执行流程的技术手段。它允许开发者在目标程序的特定位置插入自定义代码,以改变程序的默认行为或获取运行时信息。Hook 技术广泛应用于调试、逆向工程、性能分析、安全防护等领域。Hook 技术在爬虫逆向中非常有用,能够有效获取和修改目标程序的数据。通过合理使用 Hook 工具和技术,可以显著提升爬虫的效率和成功率。但使用时需注意法律和道德问题,确保行为合规。

数据知道的博客 1万+

【亲测免费】 Android SMS Gateway 项目使用教程

Android SMS Gateway 项目使用教程 1. 项目介绍 Android SMS Gateway 是一个开源项目,旨在将 Android 设备转变为 SMS 网关,允许通过 API 发送和接收短信。该项目适用于需要在应用程序或服务中集成 SMS 功能的开发者。通过该项目,您可以在本地或云服务器上访问 API,实现短信的发送和接收。 2. 项目快速启动 2.1 克隆项目 首先,您需要克隆...

gitblog_00899的博客 859

STM32串口编程基础知识讲解

本篇文章给大家介绍一下串口的基础编程知识,这些知识是属于串口的理论知识,在开始学习编写代码的时候必须要掌握这些基本的知识点。本篇文章讲解了串口的基本概念知识,大家在学习编写代码时将其掌握才能更好的理解代码。

m0_49476241的博客 1208

用Now SMS/MMS 发送中国移动彩信

Now SMS/MMS是一个强大的短信/彩信发送服务器,它内置了彩信中心,在某些运营商的网络内可以通过普通的短信猫发送彩信,而不需要使用支持GPRS的短信猫,也就是说系统本身就具有了运营商的彩信中心的功能。然而,在中国移动的网络内是不能实现这种方式发送彩信的,必须通过移动梦网的彩信中心转发。彩信的发送其实是两个过程:1、向目标手机发送一条普通的提醒短信,其中包含了发送者号码

googoo3的专栏 2498

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

探索 Laravel SMS Gateway:一键集成多平台短信服务

探索 Laravel SMS Gateway:一键集成多平台短信服务 smsLaravel SMS Gateway Integration Package项目地址:https://gitcode.com/gh_mirrors/sms/sms 在现代Web应用中,快速有效的沟通至关重要,尤其是在验证用户身份或发送重要通知时。Laravel SMS Gateway 是一个专为Laravel框架设计的...

gitblog_00024的博客 480

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

探索RestComm SMS Gateway:下一代短信服务解决方案

探索RestComm SMS Gateway:下一代短信服务解决方案 去发现同类优质开源项目:https://gitcode.com/ 在数字化通讯的浩瀚海洋中,即时、可靠的文本消息服务仍然占据着不可或缺的位置。今天,我们将带您深入探索【RestComm SMS Gateway(SMSC)】——一款颠覆传统短信息服务的游戏改变者。借助RestComm的强大力量,让我们一起揭开这一开源宝藏的神秘面纱...

gitblog_00017的博客 950

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

短信猫接收与发送短信整理

一、主要就用到三个包: 1、log4j-1.2.16.jar 2、smslib-3.5.1.jar 3、comm.jar(这个不需要拷到lib下面) 二、在Windows环境下使用SMSLib编程的时候,我们需要做一下comm的配置: 1、将win32com.dll放置在%JAVA_HOME%\jre\bin下 2、将comm.jar放置在%JAVA_HOME%\jre\l

ob的专栏 1万+

SMSGate:一款高效、可靠的短信网关解决方案

SMSGate:一款高效、可靠的短信网关解决方案 项目地址:https://gitcode.com/gh_mirrors/sms/SMSGate 是一个开源的、基于Java的短信发送系统,它旨在为企业和开发者提供简单、快速且可扩展的短信服务。通过集成各种短信提供商API,SMSGate能够帮助你轻松实现批量发送、定时任务等多种场景下的短信功能。 技术架构与分析 SMSGate采用了微服务架构设计,...

gitblog_00045的博客 1210

SMS Gateway Jasmin搭建1

Jasmin短信网关搭建步骤容器方式部署1. Docker安装2. Docker Compose 安装3. 部署Jasmin4. jCLI登录测试 容器方式部署 1. Docker安装 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce

weixin_41444433的博客 2453
下一篇: 使用USB摄像头(Webcam)拍照
phiger
博客等级 码龄24年 20粉丝 35原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值