mailto、sms 和 tel 链接

又称: mailto URI, tel URI, sms URI, SMSTO, 邮件二维码, 电话二维码, 短信二维码

定义

mailto、sms 和 tel 链接是标准的 URI 方案,用来打开一封新邮件、一条短信或一次电话呼叫。放进二维码后,它们会填好细节,但仍由用户自己点击发送或拨打。

三种方案

每种方案都是一小段文本,手机知道该把它交给哪个应用。mailto: 打开邮件应用,tel: 打开拨号器,sms: 打开短信应用,收件人,有时连信息内容,都已填好。

电话号码最好使用带加号和国家区号的国际格式,例如 +15035550123,这样来自其他国家的访客也能用这个码。

  • mailto:hello@example.com?subject=Order%20question&body=Hi(RFC 6068)
  • tel:+15035550123(RFC 3966)
  • sms:+15035550123?body=Hello(RFC 5724)
  • SMSTO:+15035550123:Hello(较老的约定,仍被广泛读取)
  • MATMSG:TO:hello@example.com;SUB:Hi;BODY:Hello;;(较老的邮件约定)

对信息文本编码

mailto 和 sms 链接中的主题和正文必须做百分号编码,所以空格变成 %20,文本中的 & 符号变成 %26。未编码的字符可能截断信息,或者破坏链接。

各平台对 sms 正文参数的解析并不总是一致,这也是较老的 SMSTO: 形式在二维码生成器中仍然常见的原因之一。印刷之前,在 iPhone 和安卓上都测试一下,是可靠的检验办法。

这些码做不到什么

二维码自己不能发送邮件、发送短信或拨打电话。它只是打开应用并填好各字段,由扫描的人决定是否按下发送或拨打。

由于发送之前收件人是可见的,人们应该检查它是否与预期相符。如果一个码预填了发往高额收费号码或陌生地址的信息,那就是一个警告信号。

常见问题

二维码能自动发送短信吗?

不能。sms 或 SMSTO 码会打开短信应用,并填好号码和文字,仍然需要用户自己按下发送。

怎样制作能拨打电话号码的二维码?

编码 tel: 加上国际格式的号码,例如 tel:+15035550123。扫描后会打开拨号器,号码已准备好。

怎样给邮件二维码添加主题行?

使用 mailto:地址?subject=你的主题&body=你的正文,其中的空格和特殊字符要做百分号编码。

sms: 和 SMSTO: 有什么区别?

sms: 是 RFC 5724 中的标准 URI 方案,而 SMSTO: 是早期二维码读取应用的一种较老约定。大多数手机两者都能读取。

来源与标准

全部术语