从PHP脚本发送短信

张贴者 于2017年7月14日在 支持博客

主题关键字: , ,

注意:有关用于发送和接收SMS和MMS消息的其他API,请参阅我们的 SMS的开发人员API+ MMS 页。

早在2003年,我们在以下讨论板上发布了一个示例PHP脚本,用于通过NowSMS发送短信 http://www.zgbianpofanghuwang.com/discus/messages/1/867.html.

尽管此脚本多年来运行良好,但由于它不支持SSL / TLS,因此存在严重的局限性。该脚本的版本2添加了对SSL / TLS的支持。

If you are migrating from the version 1 script, SSL/TLS requires a slight change in parameters. The first two parameters for the old version were host name or IP, followed by the port number. In the new version, instead these are combined into a single parameter, which is the URL of the NowSMS server (e.g., http://127.0.0.1:8800 or //sample.smshosts.com/).

可以从以下链接下载第2版脚本: http://www.zgbianpofanghuwang.com/download/sendsms-php.txt.

SendSMS函数是该示例的重要部分。这是需要包含在PHP脚本中的功能。您可以调用此函数,并指定NowSMS服务器的基本URL以及用户名和密码。 “SMS Users” NowSMS服务器上的帐户,以及收件人的电话号码和SMS消息的文本。

SendSMS函数使用这些参数来构建HTTP POST以连接到NowSMS服务器。

支持其他可选参数。有关NowSMS URL参数的其他信息,请参阅 http://www.zgbianpofanghuwang.com/doc/submitting-sms-messages/url-parameters.

在SendSMS函数之后,我们展示了两个示例,说明如何从PHP脚本中调用此函数。第一个示例发送仅包含必需参数的SMS文本消息。第二个示例包括一个额外的可选参数,以说明如何对这些参数进行编码。

//此代码提供了一个示例,说明如何从内部调用SendSMS函数

//一个用于发送消息的PHP脚本。 

 

SendSMS('//sample.smshosts.com/', 'username', 'password', '+44999999999', 'Test Message');

 

//此示例添加了另一个URL参数ReceiptRequested = Yes

SendSMS('//sample.smshosts.com/', 'username', 'password', '+44999999999', 'Test Message with delivery report', 'ReceiptRequested', 'Yes');

可以从以下链接下载以下详细描述的脚本: http://www.zgbianpofanghuwang.com/download/sendsms-php.txt.

 

<?php

 

function SendSMS ($hostUrl, $username, $password, $ phoneNoRecip , $ msgText,

                  $n1 = NULL, $v1 = NULL, $n2 = NULL, $v2 = NULL, $n3 = NULL, $v3 = NULL, 

                  $n4 = NULL, $v4 = NULL, $n5 = NULL, $v5 = NULL, $n6 = NULL, $v6 = NULL, 

                  $n7 = NULL, $v7 = NULL, $n8 = NULL, $v8 = NULL, $n9 = NULL, $v9 = NULL  ) { 

 

//参数:

//  $hostUrl – URL of the NowSMS server (e.g., http://127.0.0.1:8800 or

//             //sample.smshosts.com/

// $ username – NowSMS服务器上的“ SMS用户”帐户

// $ password –为NowSMS服务器上的“ SMS用户”帐户定义的密码

// $ phoneNoRecip –一个或多个电话号码(以逗号分隔)以接收消息

//  $ msgText – Text of the message

// $ n1- $ n9 / $ v1- $ v9-附加的可选URL参数,编码为名称/值对

//示例:charset = iso-8859-1编码为“ charset”,“ iso-8859-1”

 

   $postfields = array('Phone'=>"$ phoneNoRecip ", 'Text'=>"$ msgText");

   if (($n1 != NULL) && ($v1 != NULL)) $postfields[$n1] = $v1;

   if (($n2 != NULL) && ($v2 != NULL)) $postfields[$n2] = $v2;

   if (($n3 != NULL) && ($v3 != NULL)) $postfields[$n3] = $v3;

   if (($n4 != NULL) && ($v4 != NULL)) $postfields[$n4] = $v4;

   if (($n5 != NULL) && ($v5 != NULL)) $postfields[$n5] = $v5;

   if (($n6 != NULL) && ($v6 != NULL)) $postfields[$n6] = $v6;

   if (($n7 != NULL) && ($v7 != NULL)) $postfields[$n7] = $v7;

   if (($n8 != NULL) && ($v8 != NULL)) $postfields[$n8] = $v8;

   if (($n9 != NULL) && ($v9 != NULL)) $postfields[$n9] = $v9;

   $ch = curl_init();

   curl_setopt($ch, CURLOPT_URL, $hostUrl);

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

   curl_setopt($ch, CURLOPT_POST, 1);

   curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);

// TODO:此脚本当前不验证SSL证书

// curl_setopt($ ch,CURLOPT_VERBOSE,true);

// curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,true);

// curl_setopt($ ch,CURLOPT_CAINFO,'cacert.pem');

   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // change to 1 to verify cert

   curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

   curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");

   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

   $result = curl_exec($ch);

 

   return $result;

 

}

 

 

//此代码提供了一个示例,说明如何从内部调用SendSMS函数

//一个用于发送消息的PHP脚本。 

// NowSMS服务器的响应从脚本回显。

 

$x   = SendSMS('//sample.smshosts.com/', 'username', 'password', '+44999999999', 'Test Message');

echo $x;

 

//此示例添加了另一个URL参数ReceiptRequested = Yes

$x   = SendSMS('//sample.smshosts.com/', 'username', 'password', '+44999999999', 'Test Message with delivery report', 'ReceiptRequested', 'Yes');

echo $x;

 

?>

如有评论和更多讨论,请单击此处访问NowSMS技术论坛(讨论板)...

7回应 to “从PHP脚本发送短信”

  1. 我尝试使用NowSMS,似乎对我建立2路SMS服务器的目的很有帮助。

    但是我不知道当另一方呼叫GSM号码时如何处理语音呼叫以自动掉线(我使用专用的PCMCIA调制解调器,塞拉利昂航空卡875)。

    我可以’由于NowSMS已使用端口,因此请使用手动AT命令执行此操作。

    任何想法?
    或者可能是一项功能请求,以自动拒绝NowSms服务器上的传入语音呼叫。

  2. 布莱斯·诺伍德 说:

    你好

    对于延迟的回复表示歉意。我们为博客撰写的评论通知设置无法正常工作。

    我相信您也将您的查询发布到了我们的讨论论坛上,我们在以下地方对此进行了回复:

    //www.zgbianpofanghuwang.com/discus/messages/1/24457.html

    -bn

  3. 达里奥诺 说:

    请帮我,
    我想发送短信到多个号码。 的PHP 脚本?

    战车

  4. 布雷特 说:

    可以在以下位置找到此脚本的更新版本,该脚本支持其他NowSMS URL参数(例如,用于指定显式出站SMSC路由或发件人地址)。 //www.zgbianpofanghuwang.com/send-sms-from-php-script-updated.

  5. 嗨,您好,
    香港专业教育学院使表格工作,但我想在邮件末尾添加默认邮件。
    因此,用户键入消息,并且在发送SMS时,在用户键入消息之后,它还应该包含另一个文本。我怎么做?

    • 在您的表单中使用JavaScript在提交时附加文本…

      或在PHP脚本中对添加的文本进行硬编码。下面是将其添加到PHP脚本的示例。

      更改此:

      fwrite($ fp,“GET /?Phone=”。 rawurlencode($ phoneNoRecip)。“&Text=”。 rawurlencode($ msgText)。” HTTP/1.0\n”);

      对此:

      $ addText =” (Powered by Me)”;

      fwrite($ fp,“GET /?Phone=”。 rawurlencode($ phoneNoRecip)。“&Text=”。 rawurlencode($ msgText)。 rawurlencode($ addText)。” HTTP/1.0\n”);

引用/引用

  1. 使用PHP脚本扩展NowSMS | NowSMS -[...]返回到SMS消息,您的脚本可以将新请求发送回NowSMS以发送消息(请参阅发送。…