PHP 如何发短信
在日常开发小程序、会员系统或者活动通知工具时,很多人会遇到“用程序自动发短信”的需求,比如给用户发验证码、活动提醒。PHP作为常用的后端语言,本身没有内置发短信的功能,但可以通过对接第三方短信服务来实现,整个过程其实像“借别人的快递柜寄件”一样简单。
先搞懂核心逻辑:PHP发短信不是“自己发”
就像你不能自己印邮票寄信,PHP本身也没有短信发送的通道,必须找有正规短信资质的服务商(比如阿里云短信、腾讯云短信这类大厂服务)。简单说,PHP的作用只是“把要发的内容、手机号传给服务商,再接收服务商的反馈”,真正把短信推给手机的是服务商的通道。

第一步:选个靠谱的短信服务商
选服务商要注意两点:一是要有正规的电信增值业务资质,避免短信被拦截;二是支持PHP开发的接口,比如阿里云的短信服务(SMS)、腾讯云的短信SDK,都是现成能用的。举个生活化的例子,这就像你要寄快递,不会找没备案的小作坊,而是选顺丰、京东这类有正规牌照的平台。
以阿里云短信为例,注册账号后,找到“短信服务”,完成两项基础设置:一是创建短信签名(比如“XX会员中心”,证明短信的发送方,不然会被手机当成垃圾短信),二是创建短信模板(比如“您的验证码是123456,5分钟内有效”,内容要符合运营商规范,不能有违规词)。这些设置完成后,会得到两个关键信息:AccessKey ID和AccessKey Secret,相当于服务商给你的“快递寄件权限卡”。
第二步:用PHP对接接口,写几行代码
对接的核心是调用服务商的API,PHP有两种常用方式,新手选SDK更简单,不用自己拼复杂的接口参数。还是拿阿里云举例,步骤很像“用快递APP下单寄件”:
- 先在PHP项目里装阿里云的短信SDK,用Composer工具输入一行命令就搞定:
composer require alibabacloud/sdk,这相当于下载了快递APP; - 写一段几十行的代码,把刚才拿到的AccessKey、短信签名、模板内容、要发的手机号填进去。比如要给手机号138XXXX1234发验证码,代码里只要改这几个参数就行,其他都是固定的调用逻辑。
举个简化的例子,代码里的核心部分就是“告诉服务商:我要发的内容是【您的验证码是654321】,发给138XXXX1234,用我申请的‘XX网站’签名”,剩下的SDK会自动把请求发给服务商,等服务商处理完,会返回“发送成功”或者“手机号格式不对”的结果,就像快递APP会告诉你“快递已揽收”或者“地址填错了”。
注意几个容易踩的小坑
很多新手第一次用会出错,都是没注意这几点:一是手机号格式,国内手机号要写成+86138XXXX1234,不然服务商识别不了;二是短信内容,不能用“最”“第一”这类违规词,也不能全是数字,不然会被运营商拦截;三是测试阶段,别用自己的手机号反复测试,会被服务商判定为恶意调用,限制发送。
其实用PHP发短信,本质就是“借有资质的服务商通道传消息”,不需要复杂的技术,只要按服务商的要求填对参数,就能轻松实现。不管是做电商的订单提醒,还是做教育的课程通知,这个方法都能直接用,不用自己去申请短信通道那么麻烦。