PHP implémente l'envoi de messages texte SMS

墨辰丷
Libérer: 2023-03-31 07:00:02
original
2441 Les gens l'ont consulté

Cet article présente principalement l'implémentation de la messagerie texte SMS en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

1.Code PHP

<?php
 
class Sms
{
  private $userId = &#39;XXXXX&#39;;
 
  private $password = &#39;XXXXXX&#39;;
 
  private $templateId = &#39;XXXXXX&#39;;
 
  /**
   * @var string 短信服务器地址
   */
  private $server_uri = &#39;XXXXXX&#39;;
 
  private $port = &#39;XXXXXX&#39;;
 
 
  /**
   * 发送短信
   * @param $message 信息内容
   * @param $mobile 手机号码
   * @param string $signature 签名
   * @return bool 成功返回true, 网络请求失败返回false, 其他返回失败编码
   */
  public function sendOneMsg($message, $mobile, $signature=&#39;demo&#39;)
  {
 
    $xml_content = $this->createXmlContent($message, $mobile, $signature);
 
    $xml = $this->sendHttpRequest(trim($xml_content));
 
 
    if(! $xml) {
      return false; // 网络请求失败
    }
 
    // 解析返回的编码
    $res = simplexml_load_string($xml);
    if($res->retCode == 1000) {
      return true;
    }
 
    return $res->retCode;
 
  }
 
  /**
   * 创建 xml内容
   * @param $message 信息
   * @param $mobile 要发送的手机号码
   * @param $signature 签名
   * @return string
   */
  private function createXmlContent($message, $mobile, $signature)
  {
    $data = array(
      &#39;userId&#39; => $this->userId, // 账号
      &#39;password&#39; => $this->password, // 小写的md5后的用户密码
      &#39;templateId&#39; => $this->templateId, // 模板id
      &#39;phone&#39; => $mobile,
      &#39;port&#39; => $this->port,
      &#39;data&#39; => $message,
      &#39;signature&#39; => $signature,
    );
 
    // 设置xml版本和编码
    $dom = new \DOMDocument(&#39;1.0&#39;, &#39;UTF-8&#39;);
 
    // 创建根节点
    $request = $dom->createElement(&#39;request&#39;);
    $dom->appendChild($request);
 
    foreach($data as $key => $val) {
      // 创建元素
      $key = $dom->createElement($key);
      $request->appendChild($key);
 
      // 创建元素值
      $text = $dom->createTextNode($val);
      $key->appendChild($text);
    }
 
    return $dom->saveXML();
  }
 
  /**
   * 发送http请求
   * @param $xml_content
   * @return mixed
   */
  private function sendHttpRequest($xml_content)
  {
    $now = time();
    $headers[] = &#39;Content-Type:text/xml&#39;;
    $headers[] = &#39;Content-Length:&#39; . strlen($xml_content);
    $headers[] = &#39;Cmd:mt&#39;;
    $headers[] = &#39;TS:&#39;. $now;
    $headers[] = &#39;Authorization:&#39; . strtoupper(md5($xml_content. $now . $this->password));
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->server_uri);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_content);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $res = curl_exec($ch);
    curl_close($ch);
    //header(&#39;Content-Type:text/html; charset=utf-8&#39;);
    return $res;
  }
 
}
Copier après la connexion

Résumé : Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Un exemple php analyse le concept de constantes de classe en php

implémentation de php pour HTML Fonction de détection et d'achèvement des balises de fin dans les balises

PHP implémente la fonction de téléchargement par lots pour les fichiers de suffixe spécifiés

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal