• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

如何使用PHP发送短信

文本消息在世界范围内变得极为普遍——以至于越来越多的 Web 应用程序集成了 SMS 以直接通过他们的移动设备通知用户事件、销售或优惠券。如果您希望发展业务,php 文本消息脚本可能至关重要。

在本教程中,您将学习如何使用 PHP 代码向移动设备发送消息。

高级选项

在我们进入分步过程之前,您可能需要查看一个现成的解决方案:智能短信和电子邮件管理器 (SSEM)。这个通过 PHP 发送 SMS 的脚本允许您:

  • 管理您的联系人

  • 创建短信和电子邮件模板

  • 发送群发短信和电子邮件

  • 安排短信和电子邮件

  • 以及更多

如何使用PHP发送短信  第1张

如果您想了解如何通过 PHP 代码发送 SMS,请参阅下面的方法。

概述

发送短信 (SMS) 实际上非常简单。下面是如何将消息从 Web 应用程序发送到无线设备的简化图。

如何使用PHP发送短信  第2张 

我们将把它分解,一次一块:

  • 该消息是使用在 HTTP 服务器上存储和执行的 Web 应用程序编写的,然后通过 Internet(“云”)作为电子邮件消息发送。

  • 电子邮件由短消息服务网关(SMS 网关)接收,该网关将消息从电子邮件消息转换为 SMS 消息。

  • 然后将 SMS 消息传递给短消息服务中心 (SMSC),这是一个将数据路由到特定移动设备的服务器。

  • 消息最终通过无线网络传输给接收者。

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

电子邮件到短信

要了解如何使用 PHP 代码通过电子邮件向移动设备发送消息,您通常只需要两件事:

  1. 您要联系的移动设备的电话号码或唯一标识符

  2. 无线网络的域名(许多可以在此电子邮件到 SMS 地址的列表中找到)

大多数运营商可以遵循以下约定:

phoneNumber@domainName.com

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

要通过 PHP 向 Mr. Example 发送 SMS,您只需将 3855550168@vtext.com 添加到任何电子邮件客户端,键入消息,然后点击发送。这将向 Verizon 无线网络上的电话号码 +1 (385) 555-0168 发送短信。

例如,我将使用gmail向自己发送一条短信。

如何使用PHP发送短信  第3张 当我的手机收到消息时,它应该是这样的:

如何使用PHP发送短信  第4张太棒了!想到从 PHP 网站向移动设备发送 SMS 时可用的可能性很有趣。

PHP的mail功能

让我们更进一步。使用 SMS Gateway,我们可以使用 PHP 的功能向手机发送 SMS mail。该mail函数具有以下签名:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

您可以在PHP 文档中阅读有关它的更多信息。

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

    • 用户@example.com

    • user1@example.com, user2@example.com

    • 用户 <user@example.com>

    • 用户 1 <user1@example.com>,用户 2 <user2@example.com>

  • $subject是不言自明的;它应该是一个包含所需主题的字符串。但是,SMS 消息不需要主题。

  • $message是要传递的消息。正如PHP 手册中提到的,“每一行应该用 LF (\n) 分隔。行不应大于 70 个字符。”

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

mail( '3855550168@vtext.com', '', 'Testing' );

试驾

让我们用 PHP 运行一个测试,以确保一切设置正确,并且该mail函数实际上会发送一条文本消息。使用以下代码,我们可以运行:

<?php

var_dump( mail( '##########@vtext.com', '', 'This was sent with PHP.' ) ); // bool(true)

?>

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

如何使用PHP发送短信  第5张 如果您遇到错误,请参阅故障排除部分。

正如您在上面的 PHP 发送 SMS 示例中所见,该消息显示它来自 Gmail。这是因为我通过该服务路由来自本地服务器的所有传出消息。不幸的是,在撰写本文时,我未能成功更改From标头以反映备用地址。似乎电子邮件标头已被剥离,并将d替换为 SMS 网关准备的标头。如果有人知道解决方法,请发表评论并让我们其他人知道!

添加可用性

标记

抛开基础知识,让我们使用这个 PHP 文本消息脚本并围绕它包装一个用户界面。首先,我们将设置一个简单的表单来发送免费 SMS html 代码:

<!DOCTYPE html>
 <head>
   <meta charset="utf-8" />
  </head>
  <body>
   <div id="container">
    <h1>Sending SMS with PHP</h1>
    <form action="" method="post">
     <ul>
      <li>
       <label for="phoneNumber">Phone Number</label>
       <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li>
      <li>
      <label for="carrier">Carrier</label>
       <input type="text" name="carrier" id="carrier" />
      </li>
      <li>
       <label for="smsMessage">Message</label>
       <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea>
      </li>
     <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li>
    </ul>
   </form>
  </div>
 </body>
</html>

样式

接下来,我们将添加一些 css

body {
 margin: 0;
 padding: 3em 0;
 color: #fff; background: #0080d2;
 font-family: Georgia, Times New Roman, serif;
}

#container {
 width: 600px;
 background: #fff;
 color: #555;
 border: 3px solid #ccc;
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
 -ms-border-radius: 10px;
 border-radius: 10px;
 border-top: 3px solid #ddd;
 padding: 1em 2em;
 margin: 0 auto;
 -webkit-box-shadow: 3px 7px 5px #000;
 -moz-box-shadow: 3px 7px 5px #000;
 -ms-box-shadow: 3px 7px 5px #000;
 box-shadow: 3px 7px 5px #000;
}

ul {
 list-style: none;
 padding: 0;
}

ul > li {
 padding: 0.12em 1em
}

label {
 display: block;
 float: left;
 width: 130px;
}

input, textarea {
 font-family: Georgia, Serif;
}

我们的“发送免费短信”HTML 代码和 CSS 为我们提供了以下简单的形式:

如何使用PHP发送短信  第6张 

剧本

其中最重要的部分是 PHP 文本消息脚本。我们现在将编写这段代码:

<?php

if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) {
 if (
 isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) &&
  !empty( $_REQUEST['phoneNumber'] ) &&
  !empty( $_REQUEST['carrier'] )
 ) {
  $message = wordwrap( $_REQUEST['smsMessage'], 70 );
  $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier'];
  $result = @mail( $to, '', $message );
  print 'Message was sent to ' . $to;
 } else {
  print 'Not all information was submitted.';
 }
}

?>
<!DOCTYPE html>
  • 该脚本首先检查表单是否已提交。

  • 如果是,它会检查是否发送了phoneNumber、carrier和smsMessage变量。这在页面上可能有多个表单的情况下很有用。

  • 如果phoneNumber、carrier、 和smsMessage可用并且phoneNumber和carrier不为空,则可以尝试发送消息。

  • 函数中的消息参数mail应为每行 70 个字符。我们可以使用该wordwrap函数将消息分成 70 个字符的块。

  • phoneNumber并carrier连接起来,然后使用该mail函数发送消息。

  • 如果数据丢失或无法验证日期,脚本将简单地返回Not all information was paid。

  • 最后,mail返回一个布尔值,指示它是否成功。该值被存储$result以防我需要验证消息是否确实已发送。

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

最终代码

<?php

if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) {
 if (
 isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) &&
  !empty( $_REQUEST['phoneNumber'] ) &&
  !empty( $_REQUEST['carrier'] )
 ) {
  $message = wordwrap( $_REQUEST['smsMessage'], 70 );
  $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier'];
  $result = @mail( $to, '', $message );
  print 'Message was sent to ' . $to;
 } else {
  print 'Not all information was submitted.';
 }
}
?>
<!DOCTYPE html>
 <head>
   <meta charset="utf-8" />
   <style>
    body {
     margin: 0;
     padding: 3em 0;
     color: #fff;
     background: #0080d2;
     font-family: Georgia, Times New Roman, serif;
    }

    #container {
     width: 600px;
     background: #fff;
     color: #555;
     border: 3px solid #ccc;
     -webkit-border-radius: 10px;
     -moz-border-radius: 10px;
     -ms-border-radius: 10px;
     border-radius: 10px;
     border-top: 3px solid #ddd;
     padding: 1em 2em;
     margin: 0 auto;
     -webkit-box-shadow: 3px 7px 5px #000;
     -moz-box-shadow: 3px 7px 5px #000;
     -ms-box-shadow: 3px 7px 5px #000;
     box-shadow: 3px 7px 5px #000;
    }

    ul {
     list-style: none;
     padding: 0;
    }

    ul > li {
     padding: 0.12em 1em
    }

    label {
     display: block;
     float: left;
     width: 130px;
    }

    input, textarea {
     font-family: Georgia, Serif;
    }
   </style>
  </head>
  <body>
   <div id="container">
    <h1>Sending SMS with PHP</h1>
    <form action="" method="post">
     <ul>
      <li>
       <label for="phoneNumber">Phone Number</label>
       <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li>
      <li>
      <label for="carrier">Carrier</label>
       <input type="text" name="carrier" id="carrier" />
      </li>
      <li>
       <label for="smsMessage">Message</label>
       <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea>
      </li>
     <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li>
    </ul>
   </form>
  </div>
 </body>
</html>

故障排除

本地主机错误

为了使用该mail功能,您必须运行一个邮件服务器。如果您在 Web 主机上运行此 SMS PHP 免费脚本,您可能没问题。但如果您不确定,我建议您咨询管理员。这也适用于个人计算机。因此,如果您遇到诸如...之类的错误

Warning: mail() [function.mail]: 
Failed to connect to mailserver at "localhost" port 25, 
verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\sms\mail-test.php

...您必须安装和配置邮件服务器。这超出了本教程的范围。但是,如果您在本地mac上工作,切换到XAMPP之类的东西可能会解决这个问题。或者,尝试将Mercury Mail与WAMP、MAMP或 LAMP(或 SAMP 或 OAMP 等)系统(有很多“AMP”)一起安装。

PHPMailer

另一种选择(这是我更喜欢的方法)是使用PHPMailer。以下是如何使用 PHPMailer 连接到 Gmail 的 SMTP 服务器并发送邮件的示例。

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

require 'class.phpmailer.php';

// Instantiate Class
$mail = new PHPMailer();

// Set up SMTP
$mail->IsSMTP();                // Sets up a SMTP connection
$mail->SMTPDebug  = 2;          // This will print debugging info
$mail->SMTPAuth = true;         // Connection with the SMTP does require authorization
$mail->SMTPSecure = "tls";      // Connect using a TLS connection
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Encoding = '7bit';       // SMS uses 7-bit encoding

// Authentication
$mail->Username   = "email.address@gmail.com"; // Login
$mail->Password   = "password"; // Password

// Compose
$mail->Subject = "Testing";     // Subject (which isn't required)
$mail->Body = "Testing";        // Body of our message

// Send To
$mail->AddAddress( "##########@vtext.com" ); // Where to send it
var_dump( $mail->send() );      // Send!

这应该打印出以下内容:

如何使用PHP发送短信  第7张根据您的情况,设置连接可能需要更多时间。如果您计划使用 PHP 通过 Gmail 免费发送短信,Google 提供了有关连接的信息。

下载 SMS 消息 PHP 代码

很高兴您现在知道如何使用 SMS Sender 在 PHP 中发送和接收消息。但是 SMS Sender 并不是唯一一个将 SMS 发送到 mobile 的 PHP 脚本。对于那些寻找 SMS 消息 PHP 代码的人来说,这里只是几个不错的选择。

1. XeroChat——最佳多渠道营销应用(SaaS平台)

XeroChat 让您可以在 PHP 中发送免费 SMS 等等。您可以设置 Facebook Messenger 聊天机器人、Instagram 自动评论回复、订购和其他营销功能。这个 PHP 电子邮件到 SMS 平台非常适合餐厅或电子商务商店。如果您的企业需要一个营销解决方案中心,包括 PHP 发送 SMS 脚本,请尝试 XeroChat。

如何使用PHP发送短信  第8张

2.终极短信——营销短信群发应用

您是否正在寻找可以处理批量 SMS 的 PHP 发送文本消息脚本?然后,您正在寻找 Ultimate SMS 之类的东西。它是一个功能强大的 PHP 脚本,用于将 SMS 发送到手机,而且用户友好。您可以构建自己的api以满足您的需求,并且 Ultimate 还支持双向短信。甚至可以选择为常见消息创建自定义 SMS 模板。如果从 PHP 网站向移动设备发送 SMS 是您的新业务的优先事项,这是一个很好的选择。

如何使用PHP发送短信  第9张

3.智能短信和电子邮件管理器 (SSEM)

SSEM 是另一个用于电子邮件 SMS 脚本的 PHP,它也为您做更多事情。为您的项目或业务创建、发送和安排 SMS 和电子邮件。这些功能使营销变得更加容易。由于开发人员的不断更新,新的 SSEM UI 现在使这个 PHP 发送 SMS 脚本更易于使用。如果您正在寻找 PHP 代码以免费从网站向手机发送 SMS,请尝试 SSEM。

如何使用PHP发送短信  第10张

4.短信网关——将手机作为短信网关

您可以使用 SMS Gateway 脚本在 PHP 中发送免费 SMS。它允许您通过csv或 Excel 文件发送批量消息。您还可以将手机用作 SMS 网关。此使用 PHP 脚本发送 SMS 的其他功能包括:

  • 自动回复

  • 联系人列表创建

  • 多语言支持

  • 交货报告

  • 管理面板中的消息 

PHP 发送免费文本消息脚本的功能还不错。

如何使用PHP发送短信  第11张

5. Nimble Messaging 专业的企业短信营销应用

我们使用全面的 Nimble 完善了 SMS 消息 PHP 代码列表。这个使用 PHP 发送 SMS 的免费脚本非常适合数字营销。您不仅可以发送批量 SMS 消息,而且此脚本还集成了 WhatsApp。现在,您将能够通过他们选择的平台上的重要消息联系联系人。如果您想向客户发送交易或产品更新,请使用此 PHP 代码从网站免费脚本向移动设备发送 SMS。

文章目录
  • 高级选项
  • 概述
  • 电子邮件到短信
  • PHP的mail功能
  • 试驾
  • 添加可用性
    • 标记
    • 样式
  • 剧本
  • 最终代码
  • 故障排除
    • 本地主机错误
    • PHPMailer
  • 下载 SMS 消息 PHP 代码
    • 1. XeroChat——最佳多渠道营销应用(SaaS平台)
    • 2.终极短信——营销短信群发应用
    • 3.智能短信和电子邮件管理器 (SSEM)
    • 4.短信网关——将手机作为短信网关
    • 5. Nimble Messaging 专业的企业短信营销应用