在 HTML5 中,可以通过 <a> 标签结合 href 属性来实现点击后直接调用手机短信应用的功能。
基本语法
<a href="sms:电话号码">发送短信</a>
详细说明
基本用法
sms::这是协议头,告诉浏览器打开短信应用。- 电话号码:可选,如果不填,短信应用会打开一个空白草稿;如果填写,则预填收件人号码。
预填短信内容(部分设备支持)
你可以使用 ?body= 参数来预填短信正文。
<a href="sms:13800138000?body=你好,这是一条测试短信">发送短信</a>
⚠️ 注意:
body参数的支持情况因设备和浏览器而异:
- iOS (iPhone):通常支持
?body=。- Android:不同厂商和浏览器支持程度不同,部分可能需要使用
&body=或其他方式。- 兼容性:建议在关键业务中不要完全依赖预填内容,最好让用户确认后再发送。
多收件人(部分设备支持)
某些设备支持通过逗号分隔多个号码:
<a href="sms:13800138000,13900139000">发送给多人</a>
完整示例代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta
charset="UTF-8">H5 发短信示例</title>
</head>
<body>
<!-- 示例1:仅指定号码 -->
<a href="sms:10086">给中国移动发短信</a>
<br><br>
<!-- 示例2:指定号码 + 预填内容 -->
<a href="sms:13800138000?body=你好,我是张三,想咨询业务。">
发送预填内容的短信
</a>
<br><br>
<!-- 示例3:无号码(打开空白短信界面) -->
<a href="sms:">新建短信</a>
</body>
</html>
注意事项
- 移动端专用:
sms:协议仅在移动设备上有效,在桌面浏览器中点击通常无反应或提示不支持。 - 用户确认:点击后通常会跳转到系统短信应用,用户仍需点击“发送”才能发出,这是出于安全考虑的设计。
- 编码问题:如果预填内容包含中文或特殊字符,建议进行 URL 编码(如使用
encodeURIComponent),以避免乱码。<a href="sms:13800138000?body=<%= encodeURIComponent('你好,测试') %>">发送</a> - iOS 与 Android 差异:
- iOS 推荐使用
sms:号码?body=内容 - Android 推荐使用
sms:号码&body=内容或sms:号码?body=内容(取决于浏览器)
- iOS 推荐使用
如需更复杂的短信功能(如自动发送、群发、模板管理等),建议结合后端 API 实现,而非仅依赖前端 H5 标签。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/476859.html



