SMS

转自:http://hi.baidu.com/mobilebrother/blog/item/9e54d0f064137baba40f5239.html


发表者:Stephen 刘

术语:
MS: Mobile Station
SC: Service Centre (used for SMS)
SMS: Short Message Service
SMSC: Short Message Service - Service Centre
SR:Status Report Message storage

 

 

       SMS 作为一种信息载体,不仅仅可以用来传输文本信息,还有很多别的用法,例如使用 8 位元传输 push 、铃声、乃至图片,甚至可以于其上构建专属 TCP/IP 及 WAP 协议栈(事实上很少有人这么去做)。按照 ETSI GSM 03.40 规范规定, SMS 具有下面几种类型:

1)         SMS-DELIVER

2)         SMS-DELIVER-REPORT

3)         SMS-SUBMIT

4)         SMS-SUBMIT-REPORT,

5)         SMS-STATUS-REPORT

6)         SMS-COMMAND

可以看出,短信的发送状态报告( SMS-STATUSREPORT )是一种特定格式的短信,被用来从 SC 到 MS 传送状态报告。下面我们以一条中国移动实际的状态报告获得过程为例分析其组成元素。

第一步:发送短信前的准备工作

执行下列 AT 指令进行发送准备

1)        AT+CNMI=2,1,0,1 ,1

设置新消息到达时的指示方式,注意红色字体 1 表示位代表状态报告到达时进行提示,一般的模块默认都是 0 ,不提示状态报告。

2)        AT+CMGF=0

设置 PDU 模式

3)        AT+CSCS=”UCS2”

设置 UCS2 字符集

第二步:发送短信

AT+CMGS=38

> 0031 000B913158136777F70008FF18003C0030003000300031003E6D4B8BD577ED4FE156DE9988

+CMGS: 8

OK

注意 :红色字体部分 31 表示需要状态报告,相应的 11 表示不需要状态报告。

第三步:串口读取到回馈

+CDS: 26

00 06 08 0D91683158136777F7 60207041653000 60207041653000 00

八位元

描述

00

SMSC 长度,此处为零,表示不含短消息中心号码

06

First octet 字节,即 00000110 B ,表示这是一个 status report

08

引用消息号码,就是使用 AT+CMGS 发送短信成功时返回的那个 +CMGS 值,可以一一对应检索状态

0D91683158136777F7

对应短信接受方手机号码 13853167777

60207041653000

SMSC 接收到所发送短信的时间

60207041653000

SMSC 处理并给出状态的时间

00

对应发送短信的状态, 00 表示成功

03-27
### SMS技术概述 短消息服务 (Short Message Service, SMS) 是一种通过无线通信网络发送和接收文本消息的技术。它最初设计用于GSM网络,但现在已被广泛应用于各种移动通信标准中[^1]。 SMS的核心功能在于其能够支持最多160个字符的消息传输(基于7位编码)。如果需要传递更长的信息,则可以通过分段的方式实现多条短信组合成一条较长的消息[^2]。 ### 技术架构与协议栈 SMS工作依赖于一系列特定的协议和技术组件来完成端到端的消息传送: #### 信令系统 No.7 (SS7) SMS 使用 SS7 协议中的 MAP 子集来进行消息路由控制以及状态报告等功能。MAP 提供了必要的操作码以处理诸如提交短消息、删除短消息等请求[^3]。 #### SMSC 和其他网元角色 - **SMSC**: Short Message Service Center 负责存储转发机制,在源终端不可达时暂时保存待发消息直到成功送达为止。 - **VLR/HLR**: Visitor Location Register/Home Location Register 记录用户的当前位置信息以便正确寻址目标设备。 当用户A向用户B发送一条短信时,该过程涉及多个阶段的操作流程,包括但不限于验证权限、查找目的地地址并最终投递至接收方手机上显示出来[^4]。 ### 应用场景分析 除了传统的个人间通讯外,SMS还被大量运用于商业领域: - 验证码下发: 如在线购物平台注册新账户时常需输入由运营商推送过来的一次性密码OTP(One-Time Password)[^5]. - 广告营销推广: 利用群发工具定期向客户群体宣传新产品折扣优惠活动等内容. - 自动化通知提醒: 比如银行交易变动即时告知或者物流订单跟踪进度更新提示等等. 值得注意的是随着互联网即时聊天软件兴起,SMS传统点对点交流市场份额有所下降;然而由于其无需额外安装应用程序即可使用的便捷性和高覆盖率特性,仍然保持重要地位特别是在某些特殊场合下作为备用联络手段存在价值非凡之处[^6]. ```python import smtplib from email.mime.text import MIMEText def send_sms_via_email_gateway(phone_number, message): carrier_domain = 'sms.gateway.com' # Example domain for SMS gateway recipient = f'{phone_number}@{carrier_domain}' msg = MIMEText(message) msg['Subject'] = 'Your Subject Here' msg['From'] = 'your-email@example.com' msg['To'] = recipient server = smtplib.SMTP('smtp.example.com', 587) server.starttls() server.login('your-email@example.com', 'password') server.sendmail(msg['From'], [msg['To']], msg.as_string()) server.quit() send_sms_via_email_gateway('+1234567890', 'This is a test message.') ``` 上述脚本展示了一个简单的例子说明如何利用电子邮件服务器配合手机号码对应的邮件网关来间接实现发送短信的功能[^7]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值