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

Now SMS/MMS是 一个强大的短信/彩信发送服务器,它内置了彩信中心,在某些运营商的网络内可以通过普通的短信猫发送彩信,而不需要使用支持GPRS的短信猫,也就是说系 统本身就具有了运营商的彩信中心的功能。然而,在中国移动的网络内是不能实现这种方式发送彩信的,必须通过移动梦网的彩信中心转发。
彩信的发送其实是两个过程:
1、向目标手机发送一条普通的提醒短信,其中包含了发送者号码、彩信的URL等信息,该URL指向彩信中心的某个web目录下的某个彩信文件;
2、目标手机接收到这条提醒短信后,主动发起GPRS连接,根据短信中的URL向彩信中心提取该彩信,并显示出来。
Now SMS/MMS 自带的彩信中心其实就是一个支持手机连接的web服务器,它把制作好的彩信放在某个web目录下,手机连接时就可以下载。
然而,实践证明,如果使用中国移动的SIM卡,无论使用的是什么短信猫,都不能通过系统自带的彩信中心发送彩信。
要设置成通过移动公司的彩信中心发送彩信,必须把系统的默认设置——使用自带的MMSC(彩信中心)——改为使用移动公司的MMSC。方法如下:
在Now SMS/MMS Gateway配置程序中选择MMSC Routing,然后点击Add按钮,在弹出的对话框中建立一个新的MMSC配置,其中Acount Name和Account Description可以随便填,只是用来识别配置名称,因为系统可以设置多个MMSC。 Default Sender Address必须留空,否则发送很难成功(有极少部分能够发送成功)。Allow Sender Address Override前的复选框也必须留空。Route messages to this account for recipient phone number(s)不用填(这是一个掩码,只有符合要求的号码才用这个路由,按照官方文档的说法,不填的话是不会用这个路由的,但实际上把它设成默认路由 的话,即使不填也会用这个,也许填上+861*,1*会好些,表示中国的手机都用这个发)。Route messages to VASP via选择MM1,之后会出现更多的输入框,点击Look up Operator Seetings,出现一个选择运营商的对话框,很幸运,中国移动在里面,选择China - China Mobile,然后OK即可,系统自动把适合中国移动的内容填了进去。但是Network Connection和Modem Used两个下拉列表还没选好。这里必须使用对应的GPRS猫的调制解调器(在控制面板-电话和调制解调器选项-调制解调器-添加,按照提示一步步就能找 到GPRS猫,看好哪个调制解调器对应哪个端口,从而知道哪个调制解调器对应哪个GPRS猫)。填好这些东西后点击Test Connection可以检测连接,成功就可以了,检测时间比较长,要耐心等待。填好之后点击OK,在MMSC Routing标签页里的Additional Routes里面就能看到刚才的那个配置名称,然后在Default Route里面选择刚才的配置名称作为默认路由就可以了。
之后打开MMSC标签,配置自带的MMSC。虽然我们使用的是中国移动的 MMSC,但通过web发送彩信时,必须先发送到系统自带的MMSC,再转发到移动的MMSC,所以必须把系统的MMSC也配置好。这里就是普通web服 务器的配置(还有SMTP的配置,可选),把端口和IP选好后,还要注意Local Host Name or IP Address里要填入一个本机的IP,如果在仅在内网使用,可以直接填本机IP(外网的情况没有研究过,看看说明书先)。其他默认的就可以了。
再打开Web标签页,把Web服务器配置好。
打开浏览器,输入http://服务器IP:web服务器端口/,就能看到发送各种短信、彩信的链接,然后就可以发送彩信进行测试了。如果发送不成功,可 以打开Serial #标签页,把底下的三个Debug选项都勾上,再发送一下,然后在Now SMS/MMS 的安装目录下找到MMSCDEBUG.LOG等几个LOG文件查看究竟是什么问题。文件太大会导致发送失败,系统不会自动检查的。文件大小的上限还不清 楚,但超过100KB似乎就肯定不行。
今天搞了一天这个东西,终于能正常发送彩信了。在这里备忘一下。慢慢再作深入研究。


感谢: http://blog.csdn.net/phiger/archive/2006/12/19/1449176.aspx

官方文档: http://www.nowsms.com/documentation/ProductDocumentation/mms_notifications_and_content/Connecting_to_operator_MMSC.htm#SendingMMSMessages
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个示例代码,其中包含一个ESP-NOW发送端和一个接收端,控制LED灯亮和灭: 发送端代码: ``` #include <esp_now.h> #include <WiFi.h> // 定义接收端的MAC地址 uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // 定义发送数据的结构体 typedef struct struct_message { int ledState; } struct_message; // 初始化发送数据结构体 struct_message myData; void setup() { // 初始化串口 Serial.begin(115200); // 初始化ESP-NOW if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP-NOW"); return; } // 注册发送端 esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, broadcastAddress, 6); peerInfo.channel = 0; peerInfo.encrypt = false; if (esp_now_add_peer(&peerInfo) != ESP_OK) { Serial.println("Failed to add peer"); return; } } void loop() { // 设置发送数据 myData.ledState = digitalRead(LED_BUILTIN); // 发送数据 esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(struct_message)); if (result == ESP_OK) { Serial.println("Sent with success"); } else { Serial.println("Error sending the data"); } // 等待1秒 delay(1000); } ``` 接收端代码: ``` #include <esp_now.h> #include <WiFi.h> // 定义接收数据的结构体 typedef struct struct_message { int ledState; } struct_message; // 初始化接收数据结构体 struct_message receivedData; // 定义LED灯引脚 const int ledPin = LED_BUILTIN; void setup() { // 初始化串口 Serial.begin(115200); // 初始化ESP-NOW if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP-NOW"); return; } // 注册接收端 esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, broadcastAddress, 6); peerInfo.channel = 0; peerInfo.encrypt = false; if (esp_now_add_peer(&peerInfo) != ESP_OK) { Serial.println("Failed to add peer"); return; } // 设置LED灯引脚为输出 pinMode(ledPin, OUTPUT); } void loop() { // 等待接收数据 uint8_t macAddress[6]; while (esp_now_recv(macAddress, (uint8_t *) &receivedData, sizeof(struct_message)) == ESP_OK) { // 控制LED灯 digitalWrite(ledPin, receivedData.ledState); } } ``` 在这个示例中,发送端每秒发送一次LED灯的状态,接收端接收到数据后控制LED灯的亮和灭。可以通过修改发送端的代码来改变LED灯的状态,例如: ``` myData.ledState = !digitalRead(LED_BUILTIN); // 取反当前LED灯的状态 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值