Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

使用 PHP 发送文本消息

by
Difficulty:BeginnerLength:LongLanguages:

Chinese (Simplified) (中文(简体)) translation by Fuhuan (you can also view the original English article)

全世界,越来越多的网络应用程序集成了 SMS,直接通过移动设备通知用户事件,促销活动或优惠券。

在本教程中,我们将介绍使用 PHP 发送文本消息的基础知识。


简介

发送短消息(SMS)消息实际上非常简单。

下面是如何将消息从 Web 应用程序发送到无线设备的简化图。

我们将打破这个 - 一次一件:

  • 该消息使用在 HTTP 服务器上存储和执行的 Web 应用程序组成,然后通过因特网(“云”)作为电子邮件消息发送。
  • 电子邮件由短消息服务网关(SMS 网关)接收,该网关将消息从电子邮件消息转换为 SMS 消息。
  • 然后将 SMS 消息传递给短消息服务中心(SMSC),SMSC 是将数据路由到特定移动设备的服务器。
  • 该消息最终通过无线网络传输给接收者。

大多数无线网络都有一个 SMS 网关,通过该网关可以将电子邮件消息作为文本消息发送到移动设备。  这很好,因为从开发人员的角度来看,它通常是免费的 - 但是,它当然不是终端用户的免费服务。  费用仍然适用于邮件的收件人,通过电子邮件发送的邮件将被收取为非网络短消息。


电邮至短消息

要通过电子邮件发送短消息,通常只需要两件事:

  • 你要访问的移动设备的电话号码或唯一标识符。
  • 无线网络的域名(许多可以在这个电子邮件列表中找到 SMS 地址)

大多数运营商可遵循以下惯例:

phoneNumber 是发送消息的移动设备的电话号码,domainName.com 是网络 SMS 网关的地址。

要向 Example 先生发送文本,你只需将 3855550168@vtext.com 添加到任何电子邮件客户端,输入消息并点击发送即可。  这将向 Verizon 无线网络上的电话号码 + 1(385)555-0168 发送短消息。

例如,我会使用 Gmail 向自己发送短消息。

当我的手机收到消息时,它应该是这样的:

真棒!


PHP 的邮件功能

让我们更进一步。 使用 SMS 网关,我们可以使用 PHP 的邮件功能通过电子邮件发送短消息。 该邮件功能具有以下特征:

该邮件功能具有以下特征:

  • $ 来定义消息的接收者。  有效的例子包括:

    • user@example.com
    • user1 @ example.com,user2 @ example.com
    • 用户
    • User1 ,  User2
  • $ subject 是相当自我解释的; 它应该是包含所需主题的字符串。 但是,SMS 不需要主题。
  • $ message 是要传递的消息。 如 PHP 手册中所述,“每行应使用 LF(\ n)分隔。  行不应超过 70 个字符。“

要复制早期的功能,我们可以编写以下 PHP 代码:


试驾

让我们用 PHP 运行测试,以确保一切正确,并且邮件功能实际上将发送文本消息。  使用以下代码,我们可以运行:

当我的手机收到消息时,它看起来像这样:

如果收到错误,请参阅故障排除部分。

正如你在上图中看到的那样,该消息显示它来自 Gmail。 这是因为我通过该服务从本地服务器路由所有传出消息。 不过,在撰写本文时,我没有成功改变 From 标头以反映备用地址。 似乎电子邮件标题被剥离并替换为 SMS 网关准备的标头。 如果有人知道怎么解决,能把方法说出来吗?


增加可用性

标记

有了基础知识,让我们采用这个想法并围绕它设计一个用户界面。  首先,我们将设置一个简单的表单:

样式

接下来我们将介绍一些 CSS:

这给了我们以下简单的形式:


剧本

最重要的部分是 PHP 脚本。   我们现在写下这段代码:

  • 该脚本首先检查表单是否已提交。
  • 如果是,则检查是否发送了 phoneNumber,carrier 和 smsMessage 变量。  这在页面上可能有多个表单的情况下很有用。
  • 如果 phoneNumber,carrier 和 smsMessage 可用且 phoneNumber 和 carrier 不为空,则可以尝试发送消息。
  • mail 函数中的 message 参数每行应为 70 个字符。 我们可以使用 wordwrap 函数将消息分成 70 个字符的块。
  • phoneNumber 和 carrier 连接在一起,然后使用 mail 功能发送消息。
  • 如果数据丢失或无法验证,则脚本只返回并非所有信息都已提交。
  • 最后,mail 返回一个布尔值,指示它是否成功。 如果我需要验证消息实际上已发送,则该值存储在 $ result 中。

注:该邮件方法只通知消息是否发送或没有。  它不提供检查邮件是否已由收件人服务器或邮箱成功接收的方法。


最终守则


故障排除

Localhost 错误

要使用邮件功能,你必须运行邮件服务器。  如果你在网络主机上运行它,你可能还可以。  但如果你不确定,我建议你与管理员联系。  这也适用于个人机器。  所以如果你得到像... 那样的错误

... 你必须安装和配置邮件服务器。  ... 你必须安装和配置邮件服务器。  但是,如果你正在使用本地计算机,切换到 XAMPP 之类的东西可能会解决此问题。 或者,尝试在 WAMP,MAMP 或 LAMP(或 SAMP 或 OAMP 等)系统(这是很多'AMP')上安装 Mercury Mail。

PHPMailer 

另一个选项(我喜欢的方法)是使用 PHPMailer。 下面是如何使用 PHPMailer 连接到 Gmail 的 SMTP 服务器并发送消息的示例。

使用它就像在脚本中包含一个类一样简单。

这应该打印出以下内容:

根据你的具体情况,可能需要更多时间来设置连接。 如果你打算使用 Gmail,Google 会提供有关连接的信息。


结论

有许多方法可以完成通过 Web 应用程序发送 SMS 的任务。 这种方法实际上适用于低容量的消息传递(每月最多可能少于 1,000 条短消息)和开发人员希望在不花钱的情况下发送。 其他选择包括:

  • 使用 SMS 网关提供程序

    • 进行 Google 搜索会返回很多选项。
    • 大多数 SMS 网关提供商都包含用于通过 Web 应用程序发送消息的 API。
    • 假设你计划每月发送至少 1,000 条短消息,通常可以以合理的价格注册服务。
    • 你可以租一个简短的密码。
  • 使用 GSM 调制解调器

    • 这可能是一种贵且慢的方式,因为你得购买调制解调器并与无线网络签订合同
    • 你还必须使用 AT(Hayes)命令集。
  • 使用直接连接到无线网络,这需要很多钱。

本教程绝不是对使用 PHP 发送 短消息的全面回顾; 但它应该能给你开始的帮助!  我希望你对这个教程感兴趣。  非常感谢你的阅读!

Envato qr branded
关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.